更新时间:2023-11-06 来源:黑马程序员 浏览量:
在Hibernate中,可以通过代码操作管理事务,例如Transaction tx = session.begin Transaction();表示开启一个事务;进行持久化操作后,执行tx.commit();操作提交事务;如果在操作的过程中出现了异常的情况,则执行tx.rollback();操作回滚事务。
除了使用代码对事务的开启、提交和回滚进行操作以外,还可以在Hibernate的配置文件中对事务进行配置。在配置文件中,可以选择使用本地事务或者全局事务,还可以设置事务的隔离级别。其具体的配置方式如下所示:
<!--使用本地事务--> <property name="hibernate.currrent_session_context_class">thread</property> <!--使用全局事务--> <property name="hibernate.currrent_session_context_class">jta</property> <!--设置事务隔离级别--> <property name="hibernate.connection_isolation">2</property>
在上述配置代码中,使用hibernate.current_session_context_calss参数配置本地事务和全局事务。其中,本地事务是指对一个数据库进行的操作,即只针对一个事务性资源进行操作;而全局事务是指由应用服务器管理的事务,它需要使用JTA(Java Transaction API),可以用于多个事务性资源(跨多个数据库)。由于JTA的API非常笨重,一般只在应用服务器的环境中使用,并且全局事务的使用限制了应用代码的重用性,所以Hibernate的事务管理通常会选择使用本地事务。
在上述配置中,还使用了hibernate.connection.isolation参数配置事务的隔离级别,并将事务的隔离级别设置为2,表示读已提交。在Hibernate中,使用数字表示不同的隔离级别,它与数据库中的隔离级别相同,具体对应关系如下。
· 1-Read uncommitted读未提交。
· 2-Read committed读已提交。
·4-Repeatable read可重复读。
·8-Serializable串行化。
本文版权归黑马程序员Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:黑马程序员Java培训学院
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19