边肖将和大家分享一个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