# 什么是JPA
JPA是一种规范,它简化了现有持久化的开发,并且充分吸收了Hibernate、TopLInk、JDO等框架。SpringData JPA是全自动框架,不需要自己写sql,当然也可以自己写sql实现。而自动生成sql这点是优点,也是缺点,因为生成的sql可读性差,而且一些业务比如执行逻辑删除等还是需要自己来实现sql。
# 什么是Mybatis
Mybatis是一种半自动的ORM框架,它简单易上手,没有第三方依赖,支持对象与数据库的ORM关系映射,将sql代码与业务代码分离,使得开发人员可以更自如的写出高效的sql,不过反过来说不像SpringData JPA这种全自动的ORM框架,它需要自己实现sql语句,对开发人员的sql编写能力要求高,虽然将sql代码写在xml文件里方便了修改和编写,可这同时也降低了可读性。
JPA的优缺点
优点
可持久化Java对象。JPA能够直接持久化复杂的Java对象,并能够使用JPQL语言进行复杂的查询。JPQL是JPA专用的查询语言,是类似于SQL的面向对象的查询语言。使用简单。JPA使用注释(Annotation)定义Java对象与关系数据库之间的映射,而传统的ORM多使用xml配置文件。JPA使用起来比二手游戏卖号ORM要方便。使用JPA不用关注底层使用什么数据库。规范标准化。JPA是JCP组织发布的,是Java官方规定的统一的API。目前已经有多种框架实现JPA标准。使用了JPA的系统可以自由选择遵循JPA标准的框架,并能够自由更换。事务性、大数据量。JPA底层使用关系数据库进行存储,因此具备关系数据库的特点,例如事务性、数据完整性、并发访问、大数据量等。与其他持久化技术相比,JPA有很大的技术优势。表列出了JPA与其他持久化技术的比较。
缺点
因为sql语句是自动生成的可读性是比较差的,对于一些高级业务或者复杂的查询都需要自己来实现sql。
Mybatis的优缺点
优点
上手容易、提供xml标签、支持动态SQL编程,Mapper映射,支持对象与数据库的ORM字段关系映射。
缺点
SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库当希望对象的持久化对应用程序完全透明是,不适合使用Mybatis当数据库有移植需求或需要支持多种数据库时,不适合使用Mybatis缓存使用不当,容易产生脏数据
来源:0x9/RWqKk