谈谈数据访问层框架(2)
本文延续上一篇文章,继续谈谈常见的Java数据访问层框架的优缺点。
tkMybatis
优点:对MyBatis Generator插件生成单表模板的进一步封装,解决了每次改动数据表结构后的手工同步工作,单表操作几乎无需写额外代码或配置文件。
缺点:和MyBatis Generator插件一样,提供了Criteria支持代码层面的查询条件组装,大规模使用容易造成使用不当。
推荐指数:4星,推荐替代简单的单表操作,复杂查询还是用Mapper.xml中管理
Mybatis Plus
优点:和tkMybatis一样,单表操作几乎无需写额外代码或配置文件,功能插件丰富。
缺点:功能太过丰富以至于成了对Mybatis的改写,而不是增强,并且在往Hibernate的路上缺陷越深,但又没有Hibernate/JPA优雅。
推荐指数:2.5星,定位迷失,为什么直接不选择Hibernate
Hibernate/JPA
优点:通过注解实现映射,自动生成执行的SQL,JPA是Java ORM的标准,比较优雅,容易实现DDD中的Repository,在欧美使用率高
缺点:对象状态的管理极为复杂,初学者容易踩坑,学习曲线陡
推荐指数:3星,对团队能力要求高
Spring Data JPA
优点:JPA规范的再次封装抽象,Spring家族出品
缺点:底层还是使用了Hibernate的JPA技术实现
推荐指数:3星,基本同上
Spring Data JDBC
优点:轻量级ORM框架,与Spring Data JPA类似,但更轻量简单,实现了基本的基本CRUD接口实现,容易实现DDD中的Repository,支持根据Java方法名推导出SQL,@Query支持原生SQL语句,以及自定义扩展,支持集成MyBatis。
缺点:成熟度还不是很高,文档较少。
推荐指数:4星,高潜力项目
最后,公布下获得5星大奖的数据访问层:
Ruby On Rails的Active Record
原来最优雅的框架在别处



