`

Hibernate和Jpa中都有持久化上下文

阅读更多
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操作了。

      
分享到:
评论

相关推荐

    02_JPA详解_JPA开发环境和思想介绍.zip

    3. **持久化上下文(Persistence Context)**: 管理实体实例的状态,负责对象的创建、加载、修改和删除。 4. **实体管理器(EntityManager)**: 提供对数据库操作的方法,如persist()、merge()、remove()、find()等...

    10_传智播客JPA详解_JPA中的一对多双向关联与级联操作

    1. JPA基本概念和配置:介绍JPA的核心概念,如实体、持久化上下文等,以及如何在项目中集成JPA。 2. `@OneToMany`和`@ManyToOne`注解:详细讲解这两个注解的使用方式,以及如何建立双向关联。 3. 级联操作详解:阐述...

    Hibernate开发向导

    #### 三、持久化上下文 - **使实体持久化**:通过Session的`save()`方法将实体保存到数据库中。 - **删除实体**:使用`delete()`或`remove()`方法删除实体。 - **获取实体引用**:通过`load()`方法获取实体引用而不...

    内容管理系统(hibernate3+struts2+spring2).zip

    Hibernate3是Java持久化框架,负责数据库操作。它提供了一种对象关系映射(ORM)机制,将数据库中的表格与Java类进行映射,使得开发者可以使用面向对象的方式来处理数据库事务,而无需编写大量的SQL代码。Hibernate3...

    spring2.5.6

    在数据访问/集成方面,Spring提供了对多种持久化技术的抽象,如JDBC、Hibernate、JPA等,让开发者可以方便地切换数据访问策略,无需关心底层实现细节。此外,Spring的事务管理功能也是一大亮点,支持编程式和声明式...

    java微服务项目java微服务项目

    10. **微服务架构原则**: 单一职责原则、服务自治、服务解耦、智能端点和哑管道、界限上下文等原则指导着微服务的设计和实现,以确保系统的灵活性和稳定性。 以上内容涵盖了Java微服务项目的主要技术和概念,但实际...

Global site tag (gtag.js) - Google Analytics