Hibernate事务的示例分析

技术Hibernate事务的示例分析小编给大家分享一下Hibernate事务的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Hiber

边肖将和大家分享一个Hibernate事务的分析示例。相信大部分人都不太了解,所以分享这篇文章给大家参考。希望你看完这篇文章能有很多收获。我们一起来看看吧!

Hibernate是JDBC的轻量级包,不具备事务管理的能力。在事务管理层,Hibernate将其委托给底层的JDBC或JTA,实现事务管理和调度功能。

Hibernate事务处理机制基于JDBC事务。我们还可以通过配置文件设置使用JTA作为事务管理实现:

hibernate-configuration session-factory……. property name=' hibernate . transaction . factory _ class ' net . SF . hibernate . transaction . jtatransactionfactory!-net . SF . Hibernate . transaction . jdbctransactionfactory-/property./session-factory/hibernate-configuration基于JDBC的事务管理将事务管理委托给JDBC处理无疑是最简单的方式,hibernate事务对JDBC事务的封装也极其简单。

让我们看看下面的代码:

session=SessionFactory . OpenSession();transactiontx=session . BeginIntrasaction();……tx.commit();从JDBC级别来看,上述代码实际上对应于:

connectiondbconn=GetConnection();dbconn . setautocommit(false);……dbconn.commit();就这么简单。Hibernate没有做更多的事情(事实上,它不能做更多的事情),只是封装了这样的JDBC代码。

这里需要注意的是,在sessionFactory.openSession()中,hibernate将初始化数据库连接,同时将其AutoCommit设置为off (false)。然后,在Session.beginTransaction方法中,Hibernate将再次确认Connection的AutoCommit属性设置为off状态(以防止用户代码修改Connection。会话的自动提交属性)。

也就是说,我们一开始从SessionFactory获取的会话的自动提交属性已经关闭(AutoCommit=false),下面的代码对数据库没有影响:

session=SessionFactory . OpenSession();session.save(用户);session . close();实际上,这相当于将JDBC连接的自动提交属性设置为false。执行几个JDBC操作后,连接会关闭,而不调用提交操作。如果代码真的在数据库上工作,我们必须显式调用Transaction指令:

session=SessionFactory . OpenSession();transactiontx=session . BeginIntrasaction();session.save(用户);tx.commit();session . close();以上就是文章“Hibernate事务的实例分析”的全部内容。感谢您的阅读!相信大家都有一定的了解,希望分享的内容对大家有所帮助。想了解更多知识,请关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/136810.html

(0)

相关推荐

  • mybatis-多对多查询

    技术mybatis-多对多查询 mybatis-多对多查询用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用多对多查询的需求:查询用户同时查询出该用户的所有角色对应的sql语句: SEL

    礼包 2021年12月17日
  • C#如何实现基于Socket套接字的网络通信封装

    技术C#如何实现基于Socket套接字的网络通信封装小编给大家分享一下C#如何实现基于Socket套接字的网络通信封装,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让

    攻略 2021年11月26日
  • socket和serversocket区别(说明socket通信有哪些种类)

    技术Socket与ServerSocket类构造方法有哪些这篇文章主要介绍“Socket与ServerSocket类构造方法有哪些”,在日常操作中,相信很多人在Socket与ServerSocket类构造方法有哪些问题上

    攻略 2021年12月16日
  • mysql如何修改字段注释

    技术mysql如何修改字段注释这篇文章主要介绍“mysql如何修改字段注释”,在日常操作中,相信很多人在mysql如何修改字段注释问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql如

    攻略 2021年12月1日
  • 24Django装饰器整体缓存的一种玩法

    技术24Django装饰器整体缓存的一种玩法 24Django装饰器整体缓存的一种玩法一,Django设置缓存的三种类型:#将数据缓存到表里
    CACHE={'default':{'BACKEND':'d

    礼包 2021年12月6日
  • false函数,函数FALSE是什么意思

    技术false函数,函数FALSE是什么意思=VLOOKUP($C$3:$C$100,1月份!$A$2:$D$70,3,FALSE)是一个数组公式,应按“Shift”+“Ctrl”+“Enter”键,公式将变为{=VLO

    生活 2021年10月28日