原创 | 使用 JPA 实现 DDD 持久化 -JPA vs MyBatis

用户头像
编程道与术
关注
发布于: 2020 年 09 月 29 日
原创 | 使用JPA实现DDD持久化-JPA vs MyBatis







除了JPA之外,还有一个流行的数据访问框架MyBatis,算是个半自动化的ORM框架。



1. JPA和MyBatis的比较



JPA是个全自动化的对象持久化规范,它使得开发人员只需要针对领域模型编写面向对象的代码,而不必关心底层数据存储和SQL查询;而MyBatis则是一个能够灵活编写SQL语句,并将SQL的入参和查询结果映射成POJOs的一个持久层框架。所以,从表面上看,JPA能方便、自动化更强,而MyBatis 在SQL语句编写方面则更灵活自由。



本质上看,JPA是面向对象的,而MyBatis是面向关系的。换言之,JPA是以面向对象的领域模型为中心的,而MyBatis是以数据库为中心的。领域模型致力于解决业务逻辑问题,而关系模型致力于解决数据的高效存取问题。



优缺点比较:



  • JPA/Hibernate更自动化而MyBatis更灵活。

  • 某些情况下,MyBatis性能比JPA/Hibernate更好。

  • JPA支持面向对象的继承概念,支持继承映射、多态关联和多态查询,而MyBatis完全不支持。这一点是MyBatis的最大劣势。

  • MyBatis会助长“以数据库为中心”的设计范式。



2. 国人钟情于Mybatis,而老外却喜欢Hibernate/JPA



在国际上,JPA/Hibernate非常流行,而MyBatis很少人使用。以下图表来自2018年JVM 生态报告:(https://snyk.io/blog/jvm-ecosystem-report-2018-platform-application/





JPA的实现框架Hibernate的占比达到惊人的54%,而MyBatis占比只有区区6%。



广泛使用MyBatis的地区主要是中日韩三国。



详细内容请戳这里↓↓↓



原创 | 使用JPA实现DDD持久化-JPA vs MyBatis



这一节就讲到这里,下一节我们讲"只要O,忘记R"



如果觉得有收获,点个【赞】鼓励一下呗!





发布于: 2020 年 09 月 29 日 阅读数: 23
用户头像

编程道与术

关注

高级架构师,技术顾问,交流公号:编程道与术 2020.04.28 加入

杨宇于2020年创立编程道与术,致力于研究领域分析与建模、测试驱动开发、架构设计、自动化构建和持续集成、敏捷开发方法论、微服务、云计算等顶尖技术领域。 了解更多公众号:编程道与术

评论

发布
暂无评论
原创 | 使用JPA实现DDD持久化-JPA vs MyBatis