接口:Persistence ,主要是获取EntityManagerFactory
EntityManagerFactory接口
EntityManager接口
find()方法:和hibernate中session.get类似
getReference()方法:相当于hibernate中的session.load方法
persist()方法:相当于hibernate中的save方法,区别是若对象有ID,则不能执行insert操作,抛出异常
remove()方法:把对象从数据库移除,但该方法只能移除持久化对象,但hibernate还能移除游离对象
merge(T entity)方法:
1.若传入的是临时对象,会创建一个新的对象,把临时对象的属性复制到新的对象中,然后对新的对象
执行持久化操作,所以新的对象中有ID,临时的则没有ID
2.若传入的是游离对象,即传入的对象有OID,
1)若在EntityManager缓存中没有该对象
2)若在数据库也没有对应的记录
3)JPA会创建一个新的对象,然后把当前游离对象的属性复制到新的对象中
4)对新的对象执行insert操作
5)若在数据库有对应的记录,JPA会查询对应的记录,返回该记录的一个对象,然后把游离对象属性
复制到查询对象中,执行update操作
3.在缓存中有对应的对象,JPA会把游离对象的属性复制到缓存对象中,然后对缓存对象执行update操作
flush()方法:强制发送数据,使实体与数据库保持一致,同hibernate中session的flush()
EntityManager其他方法:
EntityTransaction接口常用方法