专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 浅谈jpa和MyBatis的区别

浅谈jpa和MyBatis的区别

更新时间:2022-04-13 10:04:16 来源:赢咖4 浏览2681次

其实JPA和mybatis大体上没什么区别,架构上很相似,赢咖4小编来告诉大家他们有哪些不同的地方。

1. jpa和mybatis的反映对象不同

GPA是java persistence api的缩写,它的中文翻译就是指程序JAVA持久层API,Mybatis相对来说比较实用的持久层框架。首先,两者最大的不同就在于内部的反应对象,JPA的操作是在对象与对象之间的反射,而mybatis的处理对象是在对象和结果集合之间的反射。虽然其最终的持久层框架结果是一样的,但是却在操作过程中有千差万别。

2. jpa和mybatis的功能性质不同

从整体的移植性来看,GPA的一致性相对较好,他在数据库的兼容性基本都是相同的,所以不用担心其他问题。一般来说springdatajpa都知道当一个接口继承了GPA,接口之后便会自动具备数据移植的良好性质。由于mybatis是使用SQL语句,所以在移植时必须将数据库的类型改为sql了。从这一点上来看,GPA更具优势,其次在操作层面修改字段的时候,mybatis也相对操作步骤比较多。

3. jpa和mybatis操作流程不同

如果是学习操作持久层的话,用hibernate会比较麻烦,所以从具体学习操作来看,mybatis具有更强烈的优势,同时也可以使用springdatajpa,但是这一种方式更适合于单表。但在这里可以发现这一篇a的妥协性,为了支持这一特性,但在实际操作起来,并不推荐荐使用,因为这种操作方式并不符合领域驱动设计的目标和理念。

举例:

mybatis就是mapper层,JPA就是repository层,其他都一样的。

JPA就是把mapper层的接口换成repository的接口:

那么接口具体长什么样呢?

mapper层

自己写sql语句

JPA的repository:

没有具体sql语句,看起来没有实现一样,但其实是遵循规则的实现,你只要写 findByXxx(Xxx xx) 就能根据某个键自动实现数据库查询,当然其他的语句也是可以实现的。

如果你觉得不灵活,也可以自己写,例如

最后的nativeQuery一定加上,不然会报错。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>