提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
说来尴尬,工作这么多年,还没用过JPA。
自己用了下querydsl-jpa,和常用的mybatis-plus进行了下对比。
整体来说都有自己的优点:mybatis-plus更加轻量,JPAQuery可以实现联表查询。
1:都包装了简单的CRUD,可以直接用
2:都支持自定义sql(如:@Select())
3:都支持二级缓存
mybatis-plus :
Mapper(Dao)类extends BaseMapper
实现类里extends ServiceImpl
接口类extends IService
jpa:
repository类(等同于Mapper/DAO类)extends JpaRepository
但是,jpa在定义好数据库类(如:User类)后,需要compile一下(会生产QUser类)
mybatis-plus :
有自己的分页插件,也能很好的支持第三方插件,如:pageHelper
jpa:
需要自己处理count查询
mybatis-plus:
自带
jpa:
需要自己实现
mybatis-plus:
有@TableLogic
jpa:
需要自己实现
mybatis-plus:
子类里重新定义父类里的字段,用@transient
jpa:
暂不能解决
归纳下大佬们的理解:
jpa:
1:默认使用hibernate作为ORM
2:更加偏向于面向对象
3:支持多表关联(用JPAQuery,不是像mybatis那样写在xml)
mybatis:
1:避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
2:更偏向于面向数据(面向关系),致命优点:简单、可读性强
网上一直说的性能:
两个ORM框架的效率不会查特别多(毕竟一次插入万级数据,且要求ms级别,这种毕竟是极少数)。平时开发中,几百条数据的情况下,两者都差不多的。
到底用哪个
第一:跟着公司走,毕竟大头兵没啥发言权
第二:我个人更推荐mybatis-plus,尽量不写xml。联表逻辑放在代码里实现(jvm运行代码很快的,避免for内部查库)
第三:JPA的学习成本比MyBatis-plus大
最后声明下:本文章没有商用,且参考了网上许多大佬的文章:
重点推荐:详细对比 JPA、MyBatis-Plus 的差异:
https://zhuanlan.zhihu.com/p/425864811
springjpa和mybatis哪个查询效率高?
https://www.zhihu.com/question/356307466/answer/919908635
JPA,Hibernate,mybatis,mybatis plus,Querydsl
https://blog.csdn.net/qq_44772660/article/details/111840512
MyBatis还是JPA? 终于有答案了!
https://zhuanlan.zhihu.com/p/263043522
…
就不一一列举了