`
newleague
  • 浏览: 1504781 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

详解Hibernate Session

 
阅读更多

这里介绍Hibernate Session,Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与Session息息相关。

AD:

 

本文向大家介绍Hibernate Session,可能好多人还不了解Hibernate Session,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

Hibernate的基本特征是完成面向对象的程序设计语言到关系数据库的映射,在Hibernate中使用持久化对象PO(Persistent Object)完成持久化操作,对PO的操作必须在Session管理下才能同步到数据库,但是这里的Session并非指HttpSession,可以理解为基于JDBC的Connnection,Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与Session息息相关,首先,我们需要知道,SessionFactory负责创建Session,SessionFactory是线程安全的,多个并发线程可以同时访问一个SessionFactory 并从中获取Session实例。而Session并非线程安全,也就是说,如果多个线程同时使用一个Session实例进行数据存取,则将会导致Session 数据存取逻辑混乱.因此创建的Session实例必须在本地存取空上运行,使之总与当前的线程相关。

这里就需要用到ThreadLocal,在很多种Session 管理方案中都用到了它.ThreadLocal 是Java中一种较为特殊的线程绑定机制,通过ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM 为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发访问问题提供了一种隔离机制,ThreadLocal并不是线程本地化的实现,而是线程局部变量。

也就是说每个使用该变量的线程都必须为该变量提供一个副本,每个线程改变该变量的值仅仅是改变该副本的值,而不会影响其他线程的该变量的值,ThreadLocal是隔离多个线程的数据共享,不存在多个线程之间共享资源,因此不再需要对线程同步。

请看一下代码:

  1. public class HibernateUtil {  
  2.  
  3. public static final SessionFactory sessionFactory;  
  4. public static final ThreadLocal session = new ThreadLocal();  
  5.  
  6. static{  
  7.  
  8. try{  
  9.  
  10. Configuration configuration=new Configuration().configure();   
  11. sessionFactory = configuration.buildSessionFactory();  
  12.  
  13. }catch (Throwable ex){  
  14.  
  15. System.err.println("Initial SessionFactory creation failed." + ex);  
  16. throw new ExceptionInInitializerError(ex);  
  17. }  
  18. }  
  19.  
  20. public static Session currentSession() throws HibernateException{  
  21. Session s = (Session) session.get();  
  22. if (s == null)  
  23. {  
  24. s = sessionFactory.openSession();  
  25. session.set(s);  
  26. }  
  27. return s;  
  28. }  
  29.  
  30. public static void closeSession() throws HibernateException {  
  31. Session s = (Session) session.get();  
  32. if (s != null)  
  33. s.close();  
  34. session.set(null);  
  35. }  

以上介绍Hibernate Session。

分享到:
评论

相关推荐

    hibernate中session对象的状态详解

    hibernate中session对象的状态详解

    hibernate和session学习

    【hibernate与Session详解】 Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。通过Hibernate,我们可以将数据库中的表与Java类进行映射,从而实现对...

    HIbernate Session 详解

    ### HIbernate Session 详解 #### 一、Session在Hibernate中的地位及作用 在Hibernate框架中,`Session` 是一个非常核心且重要的组件。作为Hibernate提供的主要操作数据库的接口,`Session` 不仅承担着保存、更新...

    hibernate session详细方法,值得珍藏

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

    详解Hibernate事务处理机制

    ### 详解Hibernate事务处理机制 #### 一、引言 Hibernate作为一款优秀的对象关系映射(ORM)框架,在Java开发领域扮演着极其重要的角色。它不仅简化了数据持久化的复杂性,还提供了一系列强大的功能来支持高效的...

    详解hibernate与webservice结合使用

    ### 详解Hibernate与WebService结合使用的知识点 #### 一、Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它提供了强大的数据持久化机制。通过使用Hibernate,开发人员可以将面向对象模型映射到...

    Hibernate的详解

    **Hibernate详解** Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需关注SQL的编写,可以更加专注于业务逻辑。本文将深入探讨Hibernate的核心概念、主要功能以及如何在...

    hibernate包详解+hibernatePPT

    **hibernate包详解** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库和面向对象编程之间架起桥梁的解决方案。通过使用Hibernate,开发人员可以避免直接编写SQL语句,而是用...

    详解hibernate4基本实现原理

    - 如果对象是瞬时的,Hibernate 将其放入 Session 缓存,转化为持久化对象。如果需要自动生成主键,Hibernate 会自动分配 ID。 - 动态生成 SQL 插入语句,根据 `hbm.xml` 文件中的映射信息执行。 - **更新...

    hibernate配置文件详解

    Hibernate 配置文件详解 Hibernate 是一个流行的 ORM(Object-Relational Mapping)框架,用于简化 Java 应用程序中的数据库交互。 Hibernate 的配置文件是其核心组件之一,用于定义 Hibernate 的运行期参数。下面...

    详解Hibernate的缓存机制及其配置代码

    ### 详解Hibernate的缓存机制及其配置代码 #### 一、缓存概念及目的 缓存作为一种优化技术,在软件开发中扮演着极其重要的角色。它位于应用程序与物理数据源(如数据库)之间,用于临时存储数据的副本,旨在减少...

    详解Hibernate与WebService结合使用

    ### 详解Hibernate与WebService结合使用的知识点 #### 一、Hibernate简介 Hibernate是一个开源的对象关系映射(ORM)框架,它提供了强大的数据持久化机制。通过使用Hibernate,开发人员可以将面向对象模型映射到...

    Hibernate缓存深入详解

    【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,从而提高了应用程序的运行速度。缓存中存储的是...

    hibernate的核心接口--Session

    ### Hibernate的核心接口——Session详解 #### 一、Session简述 **1. Session概念** - **定义**: Session 是 Hibernate 框架中最常用的接口之一,它又被称为持久化管理器。Session 负责所有与数据库交互的工作,...

    Hibernate技术详解

    ### Hibernate技术详解 #### 一、Hibernate简介与特点 Hibernate是一种开源的对象关系映射(ORM)框架,用于Java持久化应用程序。它通过提供强大的映射工具和服务,将面向对象的数据模型映射到基于SQL的关系数据库...

    hibernate--5.Hibernate配置文件详解-2

    标题"hibernate--5.Hibernate配置文件详解-2"暗示我们将继续上一节的内容,进一步深入理解Hibernate配置文件的各个方面。通常,Hibernate的配置文件以`hibernate.cfg.xml`的形式存在,它是项目初始化和连接数据库的...

    hibernate--5.Hibernate配置文件详解

    标题"hibernate--5.Hibernate配置文件详解"暗示我们将探讨的是Hibernate 5版本的配置细节。这个版本引入了一些新特性和改进,同时也保持了对前一版本的兼容性。配置文件是Hibernate的核心部分,它定义了与数据库的...

    精通Hibernate:Java对象持久化技术详解.pdf

    《精通Hibernate:Java对象持久化技术详解》这本书深入剖析了Hibernate这一流行的Java对象关系映射(ORM)框架,旨在帮助开发者全面理解并熟练掌握Hibernate的使用。Hibernate是Java开发中的重要工具,它简化了...

    Hibernate缓存深入详解 from ITEye

    **Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...

    精通Hibernate:Java对象持久化详解.zip

    3. **Session和Transaction管理**:讲解Hibernate的Session接口,它是与数据库交互的主要接口,负责对象的持久化操作。同时,还会涉及事务管理,包括如何开启、提交、回滚事务,确保数据的一致性。 4. **查询语言...

Global site tag (gtag.js) - Google Analytics