花了四天左右的时候终于自学完了jpa,虽然研究的不是很深入,但是还是觉得可以上手了~~下面就简单的做一下总结:
什么是JPA?
Jpa(java Persistence API)是SUN官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据.它的出现主要是为了简化现有的Java持久化开发工作和整合ORM技术.结束现在Hibernate、TopLink、JDO等ORM框架各自为营的局面.
JPA和Hibernate相比是如何工作的?
学过Hibernate的人都知道Hibernate是通过Session接口操作对象的.这里不得不提一下的是Session的缓存机制相当强大,Hibernate中Session缓存的作用主要有:
1、减少了访问数据库的频率
2、当缓存中的持久化对象之间存在循环关联关系时,Session保证不会出现访问对象图的死循环,以及由此导致的JVM堆栈溢出异常.
3、保证了数据库中的相关记录与缓存中相应对象保存同步(脏数据检查机制)
而Jpa中采用了EntityManager接口以及JPQL实现对象的CRUD操作
我们可以来看看EntityManager接口中定义了哪些操作对象的方法
这里还要提一下JPQL(Java Persistence Query Language),JPQL 是 EJB QL 的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询(和Hibernate的HQL很相似).
前面也说了JPA是一个ORM映射规范,J也就是说JPA是需要Provider来实现其功能的,Hibernate就是JPA Provider中很强的一个,目前来说应该无人能出其右。从功能上来说,JPA现在就是Hibernate功能的一个子集。
配置Hibernate(persistence.xml)
最后,个人觉得使用JPA最大的好处就是不在需要定义一堆的xml配置文件,我们在做对象关系映射的时候可以大量的使用注解.这大大提高了开发效率.例如,要将 Java 类指定为 JPA 实体,请使用下面批注,如下所示:
@Entity public class Employee implements Serializable { ... }
这样的配置确实令人觉得相当的简洁(当然不可能所有的配置都这么简单),个人感觉JPA的批注是学好JPA的一个重要部分.特别是使用注解来配置相对复杂的表之间的关系以及对继承关系时,尤其体现出了注解强大的灵活性!