Hibernate和Jpa中都有持久化上下文的概念(Persistence context),持久化上下文其实就是Hibernate和JPA的一级缓存,通过在持久化上下文中存储持久化状态实体的快照,既可以进行脏检测,并且持久化上下文还可以当做持久化实体的缓存。下面比较一下Hibernate和JPA中持久化上下文的不同。
1.Hibernate是将Persistence context绑定到session中,当session关闭的时候,persistence context也就关闭了。而对于session来说,Hibernate又可以根据具体情况分别绑定到Thread和JTA事务。如果Hibernate采用JDBC事务的话,那么采用ThreadLocal来实现Thread绑定,如果采用JTA事务的话,则可以将session绑定到JTA事务上。
2.JPA里持久化上下文分为两种情况:
(1)如果采用application-managed,那么应用程序来管理所需资源(比如数据库等),此时持久化上下文是绑定到当前session的,也就是绑定到EntityManager.
(2)如果采用容器管理的话,那么持久化上下文又分为两种:
1)事务范围的持久化上下文。对于事务的持久化上下文来说,每次当stateless bean与EJB object绑定的时候,容器会注入EntityManger,这样EntityManager和事务都是容器管理的。每次方法调用默认启动事务,方法调用结束后,结束事务。当事务结束的时候,与当前EntityManager关联的持久化上下文也就随之关闭。此种情况下不需要手动关EntityManager。因为容器会在事务提交或者回滚后,自动关闭EntityManager.
2)扩展的持久化上下文,扩展的持久化上下文是针对与statefull bean来说的,此时持久化上下文的生命周期和statefull bean的生命周期是一致的。每次方法调用结束后,EntityManager关闭了,但是持久化上下文没有关闭,这样以来当事务结束的时候持久化上下文中的对象仍然处于持久化状态,所以在跨方法调用时候,就不需要merge操作了。
分享到:
相关推荐
Maven坐标:org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final; 标签:hibernate、javax、persistence、jpa、api、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开...
Maven坐标:org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final; 标签:hibernate、javax、persistence、jpa、api、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index...
Hibernate、iBATIS、TopLink、Castor JDO、Apache OJB等这么多持久层框架,你还在为学习上面那个框架而苦恼吗?你还为研究下一代是那个而头疼吗? 朋友,学习JPA吧!JPA的出现就是解决您上面的苦恼的。
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
hibernate-jpa-2.1-api-1.0.0.final.jar.zip,内含hibernate-jpa-2.1-api-1.0.0.final.jar
hibernate-jpa.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
精通Hibernate:Java对象持久化技术详解.pdf 精通Hibernate:Java对象持久化技术详解.pdf
hibernate jpa 用到的所有jar
学习基于HIBERNATE的JPA持久化技术。 超简单。
5.Hibernate 05 Hibernate结合JPA1
精通Hibernate:Java对象持久化详解解压后是pdf文档。
Apress Pro JPA2 Mastering the Java Persistence API
JPA 教程 Java 持久化教程 JPA 教程 Java 持久化教程
该套是HibernateJPA的完整JAR包,只需导入全部jar包就可搭建Hibernate jpa对MySQL数据库的持久化操作
spring+springmvc+hibernate+jpa环境搭建
用Hibernate对象持久化服务简化Java数据库访问 用Hibernate对象持久化服务简化Java数据库访问
java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题