iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Hibernate事务管理机制是什么
  • 160
分享到

Hibernate事务管理机制是什么

2023-06-17 21:06:50 160人浏览 八月长安
摘要

本篇内容主要讲解“Hibernate事务管理机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate事务管理机制是什么”吧!JTA 提供了跨Session 的事务管理能力。这一

本篇内容主要讲解“Hibernate事务管理机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate事务管理机制是什么”吧!

JTA 提供了跨Session 的事务管理能力。这一点是与JDBC Transaction ***的差异。JDBC 事务由Connnection管理,也就是说,事务管理实际上是在JDBC Connection中实现。事务周期限于Connection的生命周期之类。同样,对于基于JDBC Transaction的Hibernate事务管理机制而言,事务管理在Session 所依托的JDBC Connection中实现,事务周期限于Session的生命周期。

JTA事务管理则由 JTA 容器实现,JTA 容器对当前加入事务的众多Connection 进行调度,实现其事务性要求。JTA的事务周期可横跨多个JDBC Connection生命周期。同样对于基于JTA事务的Hibernate而言,JTA事务横跨可横跨多个Session。JTA 事务是由JTA Container 维护,而参与事务的Connection无需对事务管理进行干涉。这也就是说,如果采用JTA Transaction,我们不应该再调用HibernateTransaction功能。

上面基于JDBC Transaction的正确代码,这里就会产生问题:

public class ClassA{  public void saveUser(User user){  session = sessionFactory.openSession();  Transaction tx = session.beginTransaction();  session.save(user);  tx.commit();  session.close();  }  }  public class ClassB{  public void saveOrder(Order order){  session = sessionFactory.openSession();  Transaction tx = session.beginTransaction();  session.save(order);  tx.commit();  session.close();  }  }  public class ClassC{  public void save(){  ……  UserTransaction tx = new InitialContext().lookup(“……”);  ClassA.save(user);  ClassB.save(order);  tx.commit();  ……  }  }

这里有两个类ClassA和ClassB,分别提供了两个方法:saveUsersaveOrder,用于保存用户信息和订单信息。在ClassC中,我们接连调用了ClassA.saveUser方法和ClassB.saveOrder 方法,同时引入了JTA 中的UserTransaction 以实现ClassC.save方法中的事务性。问题出现了,ClassA 和ClassB 中分别都调用了Hibernate 的Transaction 功能。在Hibernate 的JTA 封装中,Session.beginTransaction 同样也执行了InitialContext.lookup方法获取UserTransaction实例,Transaction.commit方法同样也调用了UserTransaction.commit方法。

实际上,这就形成了两个嵌套式的JTA Transaction:ClassC 申明了一个事务,而在ClassC 事务周期内,ClassA 和ClassB也企图申明自己的事务,这将导致运行期错误。因此,如果决定采用JTA Transaction,应避免再重复调用Hibernate 的Transaction功能,上面的代码修改如下:

public class ClassA{  public void save(TUser user){  session = sessionFactory.openSession();  session.save(user);  session.close();  }  ……  }  public class ClassB{  public void save (Order order){  session = sessionFactory.openSession();  session.save(order);  session.close();  }  ……  }  public class ClassC{  public void save(){  ……  UserTransaction tx = new InitialContext().lookup(“……”);  classA.save(user);  classB.save(order);  tx.commit();  ……  }  }

上面代码中的ClassC.save方法,也可以改成这样:

public class ClassC{  public void save(){  ……  session = sessionFactory.openSession();  Transaction tx = session.beginTransaction();  classA.save(user);  classB.save(order);  tx.commit();  ……  }  }

实际上,这是利用Hibernate来完成启动和提交UserTransaction的功能,但这样的做法比原本直接通过InitialContext获取UserTransaction 的做法消耗了更多的资源,得不偿失。

在EJB 中使用JTA Transaction 无疑最为简便,我们只需要将save 方法配置为JTA事务支持即可,无需显式申明任何事务,下面是一个Session Bean的save方法,它的事务属性被申明为“Required”,EJB容器将自动维护此方法执行过程中的事务:

    public void save(){     //EJB环境中,通过部署配置即可实现事务申明,而无需显式调用事务     classA.save(user);     classB.save(log);     }  //方法结束时,如果没有异常发生,则事务由EJB容器自动提交。

到此,相信大家对“Hibernate事务管理机制是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Hibernate事务管理机制是什么

本文链接: https://www.lsjlt.com/news/293282.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hibernate事务管理机制是什么
    本篇内容主要讲解“Hibernate事务管理机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate事务管理机制是什么”吧!JTA 提供了跨Session 的事务管理能力。这一...
    99+
    2023-06-17
  • 如何理解Spring的Hibernate事务管理机制
    如何理解Spring的Hibernate事务管理机制,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。主要讲了Spring 声明式事务让我们从复杂的Hibernate事务处理中...
    99+
    2023-06-17
  • PostgreSQL的事务管理机制是什么
    PostgreSQL的事务管理机制是基于ACID(原子性、一致性、隔离性、持久性)特性的。它支持事务的原子性,即事务中的所有操作要么...
    99+
    2024-04-09
    PostgreSQL
  • Hibernate事务处理机制(转)
    Hibernate是对JDBC的轻量级对象封装,Hibernate本身是不具备Transaction处理功能的,Hibernate的Transaction实际上是底层的JDBC Transaction的封装,或者是JTA Transacti...
    99+
    2023-06-03
  • Hibernate flush机制的原理是什么
    本篇内容介绍了“Hibernate flush机制的原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!针对昨天同事遇到的hiberna...
    99+
    2023-06-17
  • Hibernate JDBC事务是什么
    这篇文章主要介绍“Hibernate JDBC事务是什么”,在日常操作中,相信很多人在Hibernate JDBC事务是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hibernate JDBC事务是什么...
    99+
    2023-06-17
  • Hibernate延迟加载机制是什么
    本篇内容主要讲解“Hibernate延迟加载机制是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate延迟加载机制是什么”吧!延迟加载机制是为了避免一些无谓的性能开销而提出来的,...
    99+
    2023-06-17
  • hibernate二级缓存机制是什么
    Hibernate二级缓存机制是指在Hibernate框架中,通过配置第二级缓存来缓存对象的持久化状态,提高数据库访问性能。Hibe...
    99+
    2023-08-24
    hibernate
  • Redis事务机制是什么
    这篇文章主要介绍了Redis事务机制是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。了解Redis事务机制吗?redis 通过MULTI...
    99+
    2024-04-02
  • android事件处理机制是什么
    Android事件处理机制指的是Android系统中对用户输入事件以及其他系统事件的处理方式。Android系统中的事件处理机制主要包括以下几个部分:1. 事件触发:Android系统通过底层硬件驱动来获取用户输入事件,包括触摸事件、按...
    99+
    2023-08-11
    android
  • go内存管理机制是什么
    Go语言的内存管理机制是基于垃圾回收(Garbage Collection)的。 Go语言中的内存管理是由垃圾回收器负责的,它会自动...
    99+
    2023-10-27
    go
  • android内存管理机制是什么
    Android的内存管理机制是一种动态的机制,主要包括以下几个方面:1. 内存分配:Android使用堆来分配内存。堆是一个运行时数...
    99+
    2023-09-13
    android
  • unity内存管理机制是什么
    Unity的内存管理机制是自动化管理的。Unity使用了一种称为垃圾回收(Garbage Collection)的技术来自动管理和释...
    99+
    2023-10-27
    unity
  • CLR内存管理机制是什么
    这篇文章主要介绍“CLR内存管理机制是什么”,在日常操作中,相信很多人在CLR内存管理机制是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CLR内存管理机制是什么”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • python内存管理机制是什么
    Python内存管理机制是自动化的。Python使用引用计数来跟踪和回收对象的内存。每个对象都有一个引用计数,当引用计数减少到0时,...
    99+
    2023-08-31
    python
  • Teradata的事务管理机制是如何工作的
    Teradata的事务管理机制是通过使用ACID(原子性、一致性、隔离性和持久性)属性来确保数据的完整性和一致性。在Teradata...
    99+
    2024-04-02
  • node.js npm的包管理机制是什么
    这篇文章主要介绍“node.js npm的包管理机制是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node.js npm的包管理机制是什么”文章能帮助大家解决...
    99+
    2024-04-02
  • Tomcat中的Session管理机制是什么
    Tomcat中的Session管理机制是通过Servlet容器来管理Session对象的。Tomcat会为每个用户创建一个Sessi...
    99+
    2024-04-03
    Tomcat Session
  • Python中什么是内存管理机制
    本篇文章给大家分享的是有关Python中什么是内存管理机制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python的数据类型有哪些python的数据类型:1. 数字类型,包括...
    99+
    2023-06-14
  • 什么是Python的内存管理机制
    一、引用计数 Python 的内存管理机制主要依赖于引用计数。每个对象都有一个引用计数器,用于记录当前对象被引用的次数。当一个对象被创建时,引用计数器的值为1,每当有一个新的引用指向该对象时,计数器加1;当一个引用不再指向该对象时,计数器减...
    99+
    2023-10-29
    管理机制 内存 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作