1. 本文的讨论前提
OLTP类型项目很大一部分操作是都针对数据库原始数据,这时软件系统中的对象结构和数据库的中数据结构大体一致,是本文讨论的场景。
而因业务计算而引入的计算指标相关的数据类型,和数据库的原始结构并不相同,并非本文的讨论范场景。
2. 现有技术流派的缺陷
现在,用户访问关系型数据库的框架很多,总体上分为两个派别
- 传统ORM派,以JPA, Exposed, Ktorm为代表。
- DTO Mapper派,以MyBatis, JOOQ为代表。
以上两派都有各自的优缺点,Jimmer完美融合两派之长,走出了截然不同的第三条路。因此并不能比把Jimmer上述两个派中的任何方案做简单对比。
2.1. 以JPA为代表的传统ORM派
在传统ORM中,开发人员创建实体类,和数据库表结构直接对应。从映射的角度讲,非常简单。
传统ORM注重维护对象之间的关系,以JPA为例
List<Book> books = entityManager
.createQuery(
"select book from Book book " +
"left join fetch book.store " +
"left join fetch book.authors"
).getResultList();
复制代码
这个例子中的join fetch
是JPA的一个特色功能,可以利用SQL JOIN
使返回的Book
对象不再是孤单对象,而是附带了关联属性store
和