`

Hibernate之session理解

阅读更多
  • getCurrentSession创建的session会和绑定到当前线程,而openSession不会。
  •   getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭

这里getCurrentSession本地事务(本地事务:jdbc)时 要在配置文件里进行如下设置

    说明:两个session都必须开启事务和关闭事务,如果没有。在getCurrentSession会抛出异常

                                                                                                   openSession不会出现异常,但是数据会回滚

    * 如果使用的是本地事务(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>
* 如果使用的是全局事务(jta事务)
<property name="hibernate.current_session_context_class">jta</property> 

getCurrentSession () 使用当前的session
openSession()         重新建立一个新的session



测试:


Configuration cfg = new Configuration().configure();
  
  //创建SessionFactory
  SessionFactory factory = cfg.buildSessionFactory();
   
     Session s = factory.getCurrentSession();
        s.beginTransaction();
        s.save(new User());
        System.out.println("=====================" + s);
        System.out.println(factory.getCurrentSession() == s); //true (绑定线程)
        s.getTransaction().commit();
        System.out.println("session is open :" + s.isOpen()); //已关闭
        System.out.println("------------------------");
          Session session = factory.openSession();
        session.beginTransaction();
        session.save(new User());
        System.out.println("=====================" + session);
      
        System.out.println(factory.openSession() == session);  // false
        
        session.getTransaction().commit();
        System.out.println("session is open :" + session.isOpen()); //未关闭
分享到:
评论

相关推荐

    Hibernate-nosession

    首先,理解什么是Hibernate Session。Session是Hibernate中的核心接口,它充当了应用程序和数据库之间的桥梁,负责对象的持久化操作,如保存、更新、删除和查询等。Session通常在一个事务中打开并在事务结束时关闭,...

    hibernate中session的管理

    在Hibernate框架中,Session是与数据库交互的主要接口,它负责对象的持久化操作。然而,由于Session不是线程安全的,所以在多线程环境中管理...理解并选择合适的Session管理策略,对于优化性能和避免并发问题至关重要。

    重写hibernate的session简单增删改查

    "重写hibernate的session简单增删改查"是一个针对初学者的实践教程,旨在帮助理解如何在Hibernate中自定义Session的操作,以便更好地控制数据库交互。 一、Hibernate Session Hibernate的Session是与数据库交互的...

    Hibernate(session管理)

    首先,理解Session在Hibernate中的角色至关重要。Session是Hibernate的主要工作单元,它是应用程序与数据库之间的桥梁。它负责保存、检索和更新Java对象,同时处理事务和缓存机制。Session对象具有短暂性,通常在一...

    Hibernate_Session_Transaction

    在Java的持久化框架Hibernate中,`...理解并正确使用这两个接口是进行高效、可靠的Hibernate编程的关键。在实际应用中,应根据业务需求和性能考虑,合理地管理`Session`和`Transaction`,确保数据的完整性和一致性。

    Hibernate的Session的javadoc

    了解并熟练掌握这些概念和方法,能帮助开发者更好地理解和利用Hibernate的透明持久化能力,有效地管理对象的状态和事务,从而提高应用的性能和数据一致性。对于初学者来说,阅读Hibernate的javadoc是非常有益的,...

    实现自己的Hibernate框架之Session 方法实现

    总之,实现自己的Hibernate框架之Session方法,不仅需要熟悉数据库操作,还需要掌握面向对象编程、设计模式、数据缓存等多方面技能。这个过程有助于提升我们的编程能力,更好地理解和运用ORM技术。

    Hibernate Session释放模式

    在Java的持久化框架Hibernate中,Session对象是与数据库交互的核心组件,它负责管理对象的持久状态。在处理大量数据或者长时间运行的事务时,合理地管理Session的生命周期至关重要,这就涉及到了Hibernate的Session...

    hibernate session生命周期示例

    本示例将深入探讨Hibernate Session的生命周期及其使用,帮助你更好地理解和运用这个强大的工具。 Hibernate Session是Hibernate的核心接口,它是与数据库交互的主要接口。Session对象负责管理实体对象的状态,包括...

    Hibernate_session_factory_配置.docx

    在Java的持久层框架Hibernate中,SessionFactory是核心组件之一,它是线程安全的,负责创建Session对象,每个Session对应于数据库的一次会话。配置SessionFactory主要是通过Hibernate的配置文件(通常为hibernate....

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    Session是Hibernate的核心接口之一,它负责对象的持久化操作,比如保存、更新、删除和检索对象。Session对象就像一个临时的工作区域,用于在应用程序和数据库之间传递信息。当我们在Session上进行操作时,这些操作...

    hibernate的session.flush

    通过分析源码,我们可以进一步理解Hibernate是如何处理对象状态和SQL生成的。`Session.flush()`的实现涉及到对持久化对象的跟踪、脏检查算法以及与JDBC连接的交互,这些都是深入学习Hibernate时的重要内容。 总结来...

    模拟hibernate的session.save()功能

    在这个"模拟hibernate的session.save()功能"的资源中,我们将深入理解Hibernate的核心操作之一:持久化对象。此程序源码的目的是帮助我们理解如何在没有Hibernate库的情况下实现类似的功能,这有助于我们更好地掌握...

    hibernate的核心接口--Session

    - **定义**: Session 是 Hibernate 框架中最常用的接口之一,它又被称为持久化管理器。Session 负责所有与数据库交互的工作,包括管理持久化对象的生命周期,并通过提供第一级别的高级缓存来确保持久化对象的数据与...

    对Hibernate Session做一个简单的包装

    本篇文章将探讨如何对Hibernate的`Session`进行简单的包装,以提升代码的可维护性和灵活性。`Session`是Hibernate的核心组件,它负责对象的持久化操作,如保存、更新、查询等。 `Session`接口提供了多种方法来与...

    Hibernate_11session

    《深入理解Hibernate Session:从配置到实践》 Hibernate,作为Java领域中一款广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。在Hibernate中,Session是连接应用程序和数据库的重要桥梁,它负责对象...

    hibernate02:session对象、hql查询、在线查询也叫对象查询、离线查询

    总结起来,`Hibernate02`的核心是理解并熟练运用`Session`对象进行数据库操作,掌握HQL以进行面向对象的查询,以及理解在线查询和离线查询的适用场景。这些知识点对于任何涉及Java持久化的开发项目都是至关重要的。...

    HibernateSession , Transaction 研究

    本文将深入研究Hibernate中的`Session`和`Transaction`,这两个概念是理解Hibernate工作原理的关键。 首先,让我们了解`Session`。在Hibernate中,`Session`充当了应用程序与数据库之间的桥梁,它是持久化操作的...

    JavaEE技术-自主学习.zip_hibernate_hibernate session _javaee映射.xml

    首先,我们要理解数据库连接配置在Hibernate中的重要性。XML文件,通常命名为`hibernate.cfg.xml`,在这个文件中,我们会定义数据库的相关属性,如URL、用户名、密码、驱动类等。例如: ```xml &lt;hibernate-...

    hibernate session.doc

    在理解Hibernate框架中,Session是核心组件之一,它充当了应用程序和数据库之间的桥梁。`Session`接口提供了多种操作,如创建、更新、查询和删除数据,这些都是基于对象关系映射(ORM)的概念进行的。本篇文章将深入...

Global site tag (gtag.js) - Google Analytics