JPA是一种规范,它简化了现有持久化的开发,而且充分吸取了Hibernate、TopLInk、JDO等框架。SpringData JPA是全自动框架,不须要本身写sql,固然也能够本身写sql实现。而自动生成sql这点是优势,也是缺点,由于生成的sql可读性差,并且一些业务好比执行逻辑删除等仍是须要本身来实现sql。
sql
可持久化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与其余持久化技术的比较。app
SQL语句的编写工做量较大,尤为是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有必定要求框架
SQL语句依赖于数据库,致使数据库移植性差,不能随意更换数据库ide
当但愿对象的持久化对应用程序彻底透明是,不适合使用Mybatis大数据
当数据库有移植需求或须要支持多种数据库时,不适合使用Mybatisspa
缓存使用不当,容易产生脏数据