mybatis-spring的事务实现
打算新开一坑,搞个支持动态SQL和对象映射的异步数据访问库。说到动态SQL和对象映射这就是Mybatis的强项,可是它背后的JDBC的标准是典型的同步阻塞IO。那数据库的异步驱动有吗?当然,postgresql-async支持PostgreSQL和MySQL,但是它的API偏原始,没有ORM特性。操作数据库事务这个问题总是最烦人的,尽量不要用但你又不能不支持,今天来看看mybatis-spring是如何实现的。
打算新开一坑,搞个支持动态SQL和对象映射的异步数据访问库。说到动态SQL和对象映射这就是Mybatis的强项,可是它背后的JDBC的标准是典型的同步阻塞IO。那数据库的异步驱动有吗?当然,postgresql-async支持PostgreSQL和MySQL,但是它的API偏原始,没有ORM特性。操作数据库事务这个问题总是最烦人的,尽量不要用但你又不能不支持,今天来看看mybatis-spring是如何实现的。
以一个在实际中是非常常见为例,分页查询的rest接口,正常的同步逻辑是这样的:
响应式编程、RxJava、Vert.x、异步编程、事件驱动、NodeJs、Callback、高性能,一堆很诱惑人的名词,折腾了一段时间,总结一些内容也提出一些疑问。
Java里著名框架的源码往往不容易读,他们在功能上大而全,把多态用到极致,又有很多的性能优化;相应的由于著名所以网上的资源也非常多,慢慢读总还是能体会到整个框架的设计和思路。配合着网上的博客,书籍和源代码,花了三天时间阅读,有了一定的收获,做一下笔记。
看netty之前回顾一下Java NIO,列一下使用Java API开发NIO所需要的几个步骤
看并发看到了无锁的CAS,都说无锁没有锁竞争带来的开销,也没有线程间频繁调度的开销,比基于锁的方式有更好的性能。小白看了很激动,这么好的工具赶紧用起来。于是想试着把以前的一段并发代码改一改。