editplus网站开发外贸网站建设应该怎样选择语言
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
MyBatis-plu 和 JPA
- 前言
 - 一、说下相同点
 - 二、差异点
 - 一、从实现来说:CURD实现方式不一样
 - 二、分页上
 - 三、雪花id
 - 四、伪删除
 - 五、子类排除父类的字段
 
- 总结
 
前言
提示:这里可以添加本文要记录的大概内容:
说来尴尬,工作这么多年,还没用过JPA。
自己用了下querydsl-jpa,和常用的mybatis-plus进行了下对比。
 整体来说都有自己的优点:mybatis-plus更加轻量,JPAQuery可以实现联表查询。
一、说下相同点
1:都包装了简单的CRUD,可以直接用
 2:都支持自定义sql(如:@Select())
 3:都支持二级缓存
二、差异点
一、从实现来说:CURD实现方式不一样
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查询
三、雪花id
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
 …
 就不一一列举了
