什么是JPA?JPA是一种简化现有持久化开发的规范,充分吸收了Hibernate、TopLInk、JDO等框架。SpringDataJPA是一个全自动的框架,你不需要自己写sql,当然你也可以自己写sql。自动生成sql既是优势也是劣势,因为生成的sql可读性差,有些业务,比如执行逻辑删除,还是需要自己实现sql。什么是MybatisMybatis是一个半自动化的ORM框架,简单易用,无第三方依赖,支持对象与数据库的ORM关系映射,SQL代码与业务代码分离,让开发者更自由地编写高效的SQL,但另一方面,它不像SpringDataJPA这样的全自动ORM框架,需要自己实现sql语句,对开发者的sql编写能力要求很高。将sql代码写在xml文件中虽然方便了修改和书写,但是也降低了可读性。JPA的优缺点优点1.Java对象可以持久化。JPA可以直接持久化复杂的Java对象,可以使用JPQL语言进行复杂的查询。JPQL是JPA专用的查询语言,是一种类似于SQL的面向对象的查询语言。2.使用方便。JPA使用注解(Annotation)来定义Java对象与关系数据库之间的映射,而传统的ORM多使用xml配置文件。JPA比ORM用起来更方便。使用JPA不需要关注底层使用什么数据库。3、规范化和标准化。JPA由JCP组织发布,是Java官方规定的统一API。目前有很多框架实现了JPA标准。使用JPA的系统可以自由选择遵循JPA标准的框架,可以自由更换。4.事务性、数据量大。JPA底层使用关系型数据库进行存储,因此具有关系型数据库的事务性、数据完整性、并发访问、数据量大等特点。5、与其他持久化技术相比,JPA具有很大的技术优势。该表列出了JPA与其他持久性技术的比较。缺点因为sql语句是自动生成的,所以可读性比较差。对于一些高级的业务或者复杂的查询,需要自己去实现。sqlMybatis优缺点优点使用方便,提供xml标签,支持动态SQL编程,Mapper映射,支持对象和数据库之间ORM字段关系映射的缺点1.编写SQL语句的工作量比较大,尤其是有很多的时候字段和关联的表很多,这就需要开发者有一定的SQL语句编写技巧。2、SQL语句依赖数据库,导致数据库可移植性差,不能随意更换数据库。3.当希望对象的持久化对应用程序完全透明时,不适合使用Mybatis4。当数据库需要移植或者需要支持多数据库时,不适合Mybatis5,缓存使用不当,容易产生脏数据。
