hibernate中取得session的两种方式

JAVA的hibernate手动获取session的方法 立即下载

<PRE class=java name="code" sizcache="1" sizset="2"><PRE class=javascript name="code">Hibernate用SessionFactory提供session,并且SessionFactory提供了两种取得session的方法:getCurrentSession()和openSession()。
 
1.getCurrentSession()和openSession()的区别:
   1>.采用getCurrentSession()创建的session会绑定到当前线程中,即getCurrentSession会取得当前线程中已绑定的session,如果没有,则新建一个session并绑定到线程中。这样,保证了一个线程中各个业务方法使用的都是同一个线程,在编程式事务编程中省去了session的传递,是很方便的。而采用openSession()创建的session则只会新建session。
 
   2>.getCurrentSession()创建的session在commit或rollback时会自动关闭,而采用openSession()创建的session必须手动关闭。
 
2.使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置:
 * 如果使用的是本地事务(jdbc事务)
 <property name="hibernate.current_session_context_class">thread</property>
 * 如果使用的是全局事务(jta事务)
 <property name="hibernate.current_session_context_class">jta</property>
 
LogDaoImpl.java
public class LogDaoImpl implements LogDao {
  @Override
  public void addLog(Log log, Session session) {
    session.save(log);
  }
测试类:
public class test1 {
  public static void main(String[] args) {
/*    User user = new User();//
    user.setName("sili3");
    addUser(user);*/
    
    User user2 = new User();
    user2.setName("wangwu4");
    addUserCurrent(user2);
  }

  /**
    * 1.有异常发生,session还没有提交就在catch里回滚,故user插入不成功。log根本没有提交语句,也插入不成功
    * 2.无异常发生,session提交,故user插入成功。log根本没有提交语句,也插入不成功。
    *        说明他们用的不是同一个session
    * @param user
    */
  public static void addUser(User user) {
    Session session = null;
    LogDao logDao = new LogDaoImpl();
    try {
      session = HibernateUtils.getCurrentSession();
      session.beginTransaction();
      session.save(user);

      Log log = new Log();
      log.setType("操作日志");
      log.setDetail(user.getName() + "录入系统");
      log.setTime(new Date());
      logDao.addLog(log, HibernateUtils.getSession());//要保证addUser和addLog使用通一个session,才能保证他们在一个事务中
      //System.out.println(9/0);
      session.getTransaction().commit();
       
    } catch (Exception e) {
      e.printStackTrace();
      session.getTransaction().rollback();
    } finally {
      HibernateUtils.closeSession(session);
    }
  }

  /**
    * 1.无//System.out.println(9/0);,没发生异常,只有session的事务提交,user和log都能插入成功。
    *     说明他们用的是一个session
    * 2.有System.out.println(9/0);发生异常,session回滚,user和log都插不进去。
    *     也说明他们用的是一个session
    * @param user
    */
  public static void addUserCurrent(User user) {
    Session session = null;
    LogDao logDao = new LogDaoImpl();
    try {
      session = HibernateUtils.getCurrentSession();
      session.beginTransaction();
      session.save(user);

      Log log = new Log();
      log.setType("操作日志");
      log.setDetail(user.getName() + "录入系统");
      log.setTime(new Date());
      logDao.addLog(log, HibernateUtils.getCurrentSession());//要保证addUser和addLog使用通一个session,才能保证他们在一个事务中
      //System.out.println(9/0);
      session.getTransaction().commit();
       
    } catch (Exception e) {
      e.printStackTrace();
      session.getTransaction().rollback();
    } finally {
      HibernateUtils.closeSession(session);
    }
  }
}</PRE><BR>
<BR>
<PRE></PRE>
<PRE></PRE>

</PRE>

Hibernate中获取Session的两种方式代码示例 主要介绍了Hibernate中获取Session的两种方式代码示例,具有一定借鉴价值,需要的朋友可以参考下。 立即下载

相关推荐

Anomalib实战:从零开始构建自定义数据集的异常检测模型

本文详细介绍了如何使用Anomalib 2.1.0从零开始构建自定义数据集的异常检测模型。通过实战演示,指导读者准备符合规范的数据集结构,快速上手训练Patchcore等先进算法,并完成模型推理与调优,为工业质检、医疗影像等场景提供高效的视觉异常检测解决方案。

weixin_29165465的博客 109

hibernate获取session的两种方式

hibernate获取session的两种方式分别是getSession() 方法和getCurrentSession() 方法。 1.通过getSession方法获取session,具体操作为: //测试openSession方法获取session对象 @Test public void test1() { Configuration cfg = new Configuration()

我是IT小菜鸟的博客 5762

SAP BTP开发入门:从PaaS到CAP/UI5的30天学习路线

在云计算与数字化转型的大背景下,企业系统集成与云端扩展需求激增,传统的单点开发模式正面临深刻变革。PaaS(平台即服务)作为云原生的核心概念,将基础设施、开发环境与应用服务统一封装,为企业提供了灵活的扩展能力。SAP BTP正是SAP生态中的PaaS平台,它承载着系统集成、低代码开发、AI服务与数据管理,成为连接S/4HANA等核心业务系统与创新应用的桥梁。对于ABAP开发者而言,掌握BTP不仅是技能升级,更是应对从传统部署向云端订阅模式转型的必由之路。本文从平台基础出发,梳理BTP的核心服务与开发模型(如

weixin_31766003的博客 285

5、hibernate 获取session(getCurrentSession)

1、获取session方式二: 传递session的问题: 绑定到本地线程 2、开发流程: 2.1、开启事务(支持本地线程绑定) <property name="hibernate.current_session_context_class">thread</property> 2.2、获取session 在工具类中获取ses...

LemonSnm的博客 1087

关于无障碍适配的笔记

针对无障碍兼容性的笔记,针对wcg2.0/2.1

CoffeeAndIce的博客 4219

要配置西门子G120XA变频器实现**端子启停**和**Modbus RTU(485)频率给定

如有问题,可通过STARTER软件在线诊断Modbus通讯状态。要配置西门子G120AX变频器实现。

微:13763355074 4849

Hibernate session 获取方式浅谈

http://www.blogjava.net/redcoatjk/archive/2011/11/02/362491.html Hibernate Session, 其作用无需多言. 在运用中为避免资源消耗,一般都会手动封装一个HibernateUtil类(未使用Spring管理的前提下). 该类的作用使Hibernate加载配置文件config, 创建sessionFactory

mituan1234567的专栏 496

Lumerical官方案例、FDTD时域有限差分法仿真学习(三)——环形谐振器(Ring resonator)之第一部分

环形谐振器教程的第 1 部分使用 MODE 来设计和仿真环形谐振器。 自由光谱范围 (FSR) 和品质因数 (Q 因数) 是这种面向片上通信应用的基于绝缘体上硅 (SOI) 波导设计的关键性能指标。

weixin_45719141的博客 3万+

Hibernate中两种获取Session的方式

Session:是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础.对象的生命周期/事务的管理/数据库的存取都与Session息息相关.   Session对象是通过SessionFactory构建的,下面举个例子来介绍Hibernate两种获取session的方式。   日志,是编程中很常见的一个关注点.用户在对数据库进行操作的过程需要将这一系列操作记录,以便

李颖杰--廊坊师范学院七期信息技术提高班 5万+

uniapp - 最新微信小程序手机号一键登录功能效果,uniapp小程序实现手机号码一键登录,uniapp微信小程序端通过手机号授权完成立即登录操作(详细示例源码,新手小白一键复制开箱即用)

uniapp,微信小程序,uniapp小程序平台,uniApp手机号一键登录,uniapp小程序端手机号一键登录功能,实现微信小程序手机号一键登录,在uniapp中实现获取手机一键登录功能,uniapp手机号快捷登录,uniapp微信小程序授权登录并获取手机号,微信小程序手机号快速验证组件调用方式,uniapp小程序怎么用手机号一键登录,uniapp一键登录流程及代码,如何获取手机号一键登录到小程序,微信小程序获取本机手机号一键登录功能,新手详细教程,详细手机一键登录完整示例代码,uni-app微信unia

✅ 精选推荐文章 1万+

华为OD技术面真题 - 计算机网络 - 1

汇总华为OD技术面八股文计算机网络相关八股文,高频技术真题并提供详细解答。

qq_45776114的博客 1327

hibernate中创建session的两种方式方式,区别在哪里?

hibernate的session的产生方式,区别在哪里? hibernate的session的产生方式,区别在哪里?如何产生? session的产生方式有哪些,并且为什么要分这个? 产生流程: 1、方式一 sessionFactory.opensession():一般的crud操作我们用的是这个操作,只有增删改才用到事务,查询不需要。

qq_25843323的博客 3万+

【LLM】大模型幻觉问题的原因和缓解方法

一、幻觉定义 备注(下面提及的两个名词): Faithfulness:是否遵循input content; Factualness:是否符合世界知识; 传统nlp任务重,幻觉大多数是faithfulness,比如Intrinsic Hallucination(冲突),摘要内容和document内容有冲突;再比如Extrinsic Hallucination(无中生有),生成内容中包含input要求的其他杂七杂八虚假信息;但LLM应该考虑的幻觉Factualness,因为数据源是Open-doman的世界知

发现问题,并解决问题,批判性思维 1万+

hibernate的两种session获取方式

Hibernate有两种方式获得session,分别是:openSession和getCurrentSession 他们的区别在于 获取的是否是同一个session对象 openSession每次都会得到一个新的Session对象 getCurrentSession在同一个线程中,每次都是获取相同的Session对象,但是在不同的线程中获取的是不同的Session对象 事务提交的必要性 openSession只有在增加,删除,修改的时候需要事务,查询时不需要的 getCurrentSession是所有操作

weixin_38857307的博客 392

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hibernate中获取session对象的两种方式

两种方法:(1)openSession:无需配置在代码中可以直接使用。(2)getCurrentSession:如果使用getCurrentSession获取session对象需要在hibernate.cfg.xml中进行配置:配置1:如果是本地事物(jdbc)&lt;property name="hibernate.current_session_context_class"&gt;thread...

SASIK的博客 4059

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hibernate中两种获取Session的方式 (转)

转自: http://blog.youkuaiyun.com/yingjiebohe/article/details/8283185   Session:是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础.对象的生命周期/事务的管理/数据库的存取都与Session息息相关.   Session对象是通过SessionFactory构建的,下面举个例子来介绍Hibernat

wakata随记 889

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

hibernate获取session的两种方式的区别

hibernate获取session有两种方式,存在着一定的区别 获取session的三个步骤 // 1.创建Configuration,该对象用于读取hibernate.cfg.xml,并完成初始化     Configuration configuration = new Configuration().configure(); // 2.创建SessionFactory     Se...

不积跬步,无以至千里 6798
上一篇: web.xml中classpath:和classpath*:
下一篇: HibernateTemplate和HibernateDaoSupport
一名金人
博客等级 码龄16年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值