T31训练营 DAY5

谈谈数据访问层框架(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

原来最优雅的框架在别处

 

你可能感兴趣的:(T31训练营,java)