`
magicyang918
  • 浏览: 30061 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Hibernate与JPA持久化上下文(Persistence context)生命周期比较

阅读更多
转自http://yuquan-nana.iteye.com/blog/258015

Hibernate和Jpa中都有持久化上下文的概念(Persistence context),持久化上下文其实就是Hibernate和JPA的一级缓存,通过在持久化上下文中存储持久化状态实体的快照,既可以进行脏检测,并且持久化上下文还可以当做持久化实体的缓存。虽然Hibernate作为JPA的超集,Hibernate3.2之后实现了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操作了。

分享到:
评论

相关推荐

    hibernate-jpa.jar

    Hibernate JPA的核心概念包括实体(Entity)、实体管理器(EntityManager)、实体管理工厂(EntityManagerFactory)以及持久化上下文(Persistence Context)。实体是ORM中的关键概念,代表了数据库中的表或者记录。...

    JPA所有教学资料.rar

    **Java Persistence API (JPA)*...理解JPA的批注、持久化上下文、生命周期,以及如何在实际项目中与Hibernate结合,是每个Java开发者必备的技能。通过提供的资料,你可以深入学习并实践JPA,从而提升你的Java开发能力。

    jpa最基本最全配置的jar包

    3. **持久化上下文(Persistence Context)**: JPA中的持久化上下文管理着实体实例的状态,它可以自动处理对象的创建、更新和删除。默认情况下,持久化上下文是事务性的,一个事务内的所有操作都会在一个上下文中...

    JPA讲解视频

    3. **持久化上下文(Persistence Context)**:JPA管理的对象状态,分为瞬时态、持久态和脱管态。当对象被持久化上下文管理时,它的更改会自动同步到数据库。 4. **查询语言(JPQL)**:Java Persistence Query ...

    jpa技术资料包含文档以及ppt

    这些文档可能涵盖了JPA的核心概念,如实体(Entity)、持久化上下文(Persistence Context)、事务(Transactions)、继承(Inheritance)、关联(Associations)等。此外,它们也可能讨论了如何配置JPA,包括数据源...

    JPA 源码和文档

    4. **持久化上下文(Persistence Context)**: 这是一个临时存储区域,包含了所有处于活跃状态的实体。在该上下文中,JPA会自动跟踪实体的状态(新建、已修改、未变或已删除)。 5. **查询语言(JPQL)**: JPA提供...

    jpa tutorial

    3. 持久化上下文(Persistence Context):这是一个作用域,实体管理器用来跟踪实体的状态,保证数据的一致性。 4. 查询语言(JPQL):Java Persistence Query Language是JPA定义的一种面向对象的查询语言,用于在...

    JPA.rar_jpa

    4. **持久化上下文(Persistence Context)**:一个包含所有处于活动状态的实体的内存映像,JPA会自动跟踪这些实体的状态变化,并在合适的时候同步到数据库。 5. **查询语言(JPQL)**:Java Persistence Query ...

    JPA百度百科

    4. **持久化上下文(Persistence Context)**:`EntityManager`维护了一个持久化上下文,它包含了当前管理的所有实体。在这个上下文中,实体的修改会自动同步到数据库,无需显式调用`save()`或`update()`方法。 5. ...

    ejb 学习笔记4

    - **持久化上下文(Persistence Context)**:类似于Hibernate中的Session缓存,是一个包含一系列受管实体的集合。它分为两种类型:事务范围的持久化上下文和扩展的持久化上下文,后者主要应用于有状态会话Bean中,...

    Jpa帮助文档,chm格式

    2. **持久化上下文(Persistence Context)**:了解JPA中的持久化上下文是如何管理和跟踪实体状态的,包括瞬时(Transient)、持久化(Persistent)、托管(Managed)和脱管(Detached)状态。 3. **数据访问接口...

    hibernate软件包

    3. **持久化上下文(Persistence Context)**:实体管理器维护的一个内存中的对象状态,它包含了所有被管理的实体。在持久化上下文中,对象的状态变更会被自动同步到数据库,无需显式调用保存或更新方法。 4. **...

    hibernate-entitymanager-3.4.0.GA

    4. **持久化上下文(Persistence Context)**:是Hibernate Entity Manager维护的一个内存中的对象状态管理区域,确保在一段时间内对象的持久化状态是一致的。 5. **查询语言(JPQL)**:Java Persistence Query ...

    JPA教程(全部为PDF格式的电子书)

    3. **持久化上下文(Persistence Context)**:理解JPA中管理对象状态的概念,包括瞬时、持久和托管状态。 4. **关系映射**:讲解了如何处理一对一、一对多、多对一、多对多等复杂关系。 5. **查询语言(JPQL)**:...

    JPA学习资料与例子

    `JPA_Basic.pdf`可能是一个基础教程,涵盖了JPA的核心概念,如持久化上下文(Persistence Context)、查询语言(JPQL)和 Criteria API。JPQL是一种面向对象的查询语言,类似于SQL,但更加面向Java对象,允许开发者...

    hibernate-entitymanager-3.3.1.GA

    3. **持久化上下文(Persistence Context)**:在Entity Manager中,每个实体实例都存在于一个持久化上下文中。这个上下文维护了实体实例与数据库记录的一致性,确保了事务中的数据一致性。 4. **JPQL(Java ...

    最新hibernate 4.1.1.Final版本

    12. **持久化上下文(Persistence Context)**:持久化上下文是Hibernate内存中的一个临时区域,它维护着与当前事务相关的对象状态,确保了数据的一致性。 综上所述,Hibernate 4.1.1.Final版本是一个强大的ORM工具...

    JPA学习源码(EJB实体Bean)

    4. **持久化上下文(Persistence Context)**:它是一个临时内存区域,包含了所有当前被管理的实体实例。在该上下文中,JPA会自动处理对象的状态(新建、持久化、已加载、已删除)以及对象间的关联关系。 5. **查询...

    JPA技术:年初写的办公室OA系统

    4. **持久化上下文(Persistence Context)**: 存储了实体的内存视图,管理实体的状态和生命周期。在事务范围内,实体的修改会被自动同步到数据库。 ### JPA核心特性 1. **对象/关系映射(ORM)**: 使用注解或XML...

Global site tag (gtag.js) - Google Analytics