`
wuxw920
  • 浏览: 31464 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Hibernate的session是怎么创建的

阅读更多
   Hibernat 对数据库的操作是通过Session来实现的,这里的session不同于页面间传递参数的session,
而是类似于JDBC中的 Connection。Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与session息息相关。
  Session是由HibernateSessionFactory创建的,是线程安全的,可以让多个执行线程同时存取     
   HibernateSessionFactory而不会有数据共享的问题,但不能让多个线程共享一个Session。
   SessionFactory对象的创建:
  
      Configuration cfg = new Configuration().configure();
      SessionFactory sessions = cfg.buildSessionFactory();
   

   session创建时使用了一个ThreadLocal类来建立一个Session管理的辅助类,使用ThreadLocal可以有效隔离执行所用的数据,
避开了Session的多线程之间的数据共享问题。

   //创建一个线程本地变量。
public static final ThreadLocal<Session> threadlocal = new ThreadLocal<Session>();
		public static org.hibernate.SessionFactory sessionFactory;
		 
		//获取session的方法
		public static Sessin getSession() throws HibernateException{
				//返回线程局部变量的当前线程的值
				Session s = (Session)threadLocal.get();
				//如果sessionFactory为空,重新创建sessionFactory;如果线程为空,就打开一个新的session
				if(session==null || !session.isOpen()){
				if(sessionFactory == null){
				rebuildSessionFactory(); session = (sessionFactory != null) sessionFactory.openSession():null;
				// 将hibernate的session放入到线程中保存;只要这个线程不结束,都可以通过线程的get()方法来获取
				threadLocal.set(session);return session;
		}
分享到:
评论

相关推荐

    org.hibernate.HibernateException: No Hibernate Session bound to thread

    Hibernate Session 绑定线程解决方案 在 Java web 开发中, Hibernate 是一个非常流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在使用 Hibernate 进行数据库操作时,...

    Hibernate-nosession

    在这种情况下,使用Hibernate-nosession模式可以避免创建和管理Session的开销,从而提高应用性能。nosession模式并不意味着完全不使用Hibernate,而是尽量减少对Session的依赖,转而使用其他API,例如Query或...

    Hibernate Session释放模式

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

    Hibernate_Session_Transaction

    在Java的持久化框架Hibernate中,`Session`和`Transaction`是两个至关重要的概念,它们在数据管理和事务处理中起到核心作用。这篇文章将深入解析这两个概念及其相关知识点。 `Session`是Hibernate提供的一种与...

    hibernate session生命周期示例

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

    Hibernate(session管理)

    1. **Session的创建**:在Hibernate中,我们通常通过SessionFactory对象来创建Session。SessionFactory是线程安全的,它是一个全局的单例对象,负责管理Session的生命周期。我们可以通过配置文件或者使用Annotation...

    hibernate和session学习

    在Hibernate中,`SessionFactory`是核心组件之一,它是线程安全的,用于创建`Session`对象。`SessionFactory`通常在应用启动时创建一次,然后在整个应用生命周期中复用。创建`SessionFactory`需要通过读取Hibernate...

    重写hibernate的session简单增删改查

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

    Hibernate的Session的javadoc

    Hibernate的Session接口是Java应用程序与Hibernate之间主要的运行时交互接口,它提供了对持久化对象的创建、读取和删除操作。Session的概念是基于对象的状态管理和数据库事务的,它的生命周期通常与一个物理事务绑定...

    hibernate中session的管理

    首先,SessionFactory是Hibernate的核心组件,它是一个线程安全的工厂类,用于创建Session实例。SessionFactory通常在应用程序启动时初始化,并在整个应用生命周期内保持不变,因此它可以被多个并发线程共享。...

    hibernate session详细方法,值得珍藏

    ### Hibernate Session 详解:值得珍藏的深度解析 在Java持久化领域,Hibernate无疑占据了举足轻重的地位,而`Hibernate Session`则是其中的核心组件之一,它提供了与数据库交互的主要接口,是对象/关系映射(ORM)...

    Hibernate_session_factory_配置.docx

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

    HibernateSession , Transaction 研究

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

    hibernate session.doc

    `Session`接口提供了多种操作,如创建、更新、查询和删除数据,这些都是基于对象关系映射(ORM)的概念进行的。本篇文章将深入探讨`Session`中的`delete()`方法及其相关知识点。 `delete()`方法是`Session`接口中的...

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

    在开始使用Session之前,需要配置Hibernate的环境,包括创建SessionFactory,这是整个应用与数据库交互的工厂。SessionFactory由Configuration实例创建,配置文件通常为`hibernate.cfg.xml`,其中包含了数据库连接...

    hibernate中session对象的状态详解

    hibernate中session对象的状态详解

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

    创建`Session`对象时通常通过`SessionFactory`,这个工厂类负责配置和创建`Session`实例。在使用完`Session`后,记得关闭它以释放资源。 接下来,我们谈谈HQL查询。HQL是Hibernate提供的一种面向对象的查询语言,...

    Hibernate_11session

    本文将详细探讨Hibernate Session的配置、创建以及在实际应用中的实现。 一、Hibernate Session的配置 在Hibernate中,配置主要包括以下几部分: 1. **hibernate.cfg.xml**:这是Hibernate的主配置文件,其中包含...

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

    这包括创建SessionFactory,打开Session,执行CRUD操作,最后关闭Session和SessionFactory,确保资源得到正确释放。 通过这些步骤,我们可以看到Hibernate如何简化了数据库操作,将底层SQL语句抽象为面向对象的方法...

    hibernate的session.flush

    在Java的持久化框架Hibernate中,`Session`是与数据库交互的核心接口,它扮演着连接应用程序和数据库的角色。`Session.flush()`方法是一个关键的操作,它强制Hibernate将内存中的对象状态同步到数据库,确保数据的...

Global site tag (gtag.js) - Google Analytics