Hibernate 的 Session ,项目获取方式如何抉择?

科多大数据小课堂:Hibernate 的 Session ,项目获取方式如何抉择?

Session:是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础.对象的生命周期/事务的管理/数据库的存取都与Session息息相关.

Session对象是通过SessionFactory构建的,下面举个例子来介绍Hibernate两种获取session的方式。

日志,是编程中很常见的一个关注点.用户在对数据库进行操作的过程需要将这一系列操作记录,以便跟踪数据库的动态.那么一个用户在向数据库插入一条记录的时候,就要向日志文件中记录一条记录,用户的一系列操作都要在一个Session中进行,否则这就成为了两个线程.不能保证同步.看下面的代码

HibernateUtil管理Session的工具类

注意:

1.openSession和getCurrentSession的区别?

openSession必须关闭,currentSession在事务结束后自动关闭

openSession没有和当前线程绑定,currentSession和当前线程绑定

2.如果使用currentSession需要在hibernate.cfg.xml文件中进行配置:

如果是本地事务(jdbc事务)

thread

如果是全局事务(jta事务)

jta

如果在 ssh 中的 sessionFactory 配置中,如果使用 spring 管理事务

应将 hibernate.current_session_context_class 设为 org.springframework.orm.hibernate4.SpringSessionContext

全局事务:资源管理器管理和协调的事务,可以跨越多个数据库和进程。资源管理器一般使用XA 二阶段提交协议与“企业信息系统”(EIS) 或数据库进行交互。

本地事务:在单个 EIS或数据库的本地并且限制在单个进程内的事务。本地事务不涉及多个数据来源。

在工作中,当然是推荐使用getCurrentSession,高效绿色环保,还可以配合spring 管理事务,何乐不为呢?


http://www.101test.com/cand/index?paperId=IPBAKU

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文包括: 1、CRM 项目的整体介绍 2、Hibernate 框架概述 3、Hibernate 快速入门 4、H...
    廖少少阅读 3,543评论 9 66
  • Hibernate: 一个持久化框架 一个ORM框架 加载:根据特定的OID,把一个对象从数据库加载到内存中OID...
    JHMichael阅读 2,124评论 0 27
  • Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库...
    兰缘小妖阅读 1,299评论 1 18
  • 这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring ...
    杂货铺老板阅读 1,601评论 0 2
  • 今年,我在家里栽种了很多的绿植。花草蔬菜,都在野蛮生长。我喜欢这样的生活,一粒种子,栽种到土壤里,悉心照顾,松...
    邰枫的台阅读 1,214评论 14 11

友情链接更多精彩内容