hibernate事务管理 (jdbc jta)
来源:互联网 发布:javascript eval json 编辑:程序博客网 时间:2024/06/04 18:26
hibernate的两种事务管理jdbc 和jta方式。下边说说两者的区别
一、说明一下jdbc和jta方式事务管理的区别:
JDBC事务由Connnection管理,也就是说,事务管理实际上是在JDBC Connection
中实现。事务周期限于Connection的生命周期之内
JTA 事务管理则由 JTA 容器实现,JTA 容器对当前加入事务的众多Connection 进
行调度,实现其事务性要求。JTA的事务周期可横跨多个JDBC Connection生命周期。
二、在了解jdbc和jta事务的基础上,再来讨论hibernate的两种事务
对于基于JDBC Transaction的Hibernate 事务管理机制而言,事务管理在Session 所依托的JDBC Connection
中实现,事务周期限于Session的生命周期。
对于基于JTA事务的Hibernate而言,JTA事务横跨可横跨多个Session。
三、hibernate中写法的不同
public void saveUser(){
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
}
必须在session.close()之前commit或者rollback
JTA(Java Transaction API)是事务服务的J2EE解决方案。本质上,它是描述事务接口的J2EE模型的一部分,开发人员直接使用该接口或者通过J2EE容器使用该接口来确保业务逻辑能够可靠地运行。
JTA有3个接口,它们分别是UserTransaction接口、TransactionManager接口和Transaction接口。这些接口共享公共的事物操作,例如commit()和rollback(),但也包含特殊的事务操作,例如suspend()、resume()和enlist(),它们只出现在特定的接口上,以便在实现中允许一定程度的访问控制。
在一个具有多个数据库的系统中,可能一个程序会调用几个数据库中的数据,需要一种分布式事务,或者准备用JTA来管理跨Session的长事务,那么就需要使用JTA事务。下面介绍如何在Hibernate的配置文件中配置JTA事务。在hibernate.properties文件中设置如下(把JTATransactionFactory所在的配置行的注释符“#”取消掉):
hibernate.transaction.factory_class org.hibernate.transaction.JTATransactionFactory
或者在hibernate.cfg.xml文件中配置如下:
# hibernate.transaction.factory_class org.hibernate.transaction.JDBCTransactionFactory
<session-factory>
下面是一个应用JTA事务的例子:
…..
<property name=” hibernate.transaction.factory_class”>
org.hibernate.transaction.JTATransactionFactory
</property>
……
</session-factory>
javax.transaction.UserTransaction tx = null;
tx = new initialContext().lookup(” javax.transaction.UserTransaction ”) ;
tx.begin();
Session s1 = sf.openSession();
……
s1.flush(); s1.close();
Session s2 = sf.openSession();
……
s2.flush(); s2.close();
tx.commit();
- hibernate事务管理 (jdbc jta)
- Hibernate的两种事务管理jdbc 和jta方式
- Hibernate的两种事务管理jdbc 和jta方式
- hibernate的两种事务管理jdbc 和jta方式
- JDBC、JTA、Spring的事务管理
- JTA与JDBC 事务管理的区别
- Spring事务管理;hibernate事务管理;jdbc事务管理
- JTA 事务管理
- JTA 事务管理
- spring的jdbc事务管理和JTA有什么区别?
- hibernate 基于JDBC的事务管理
- 事务管理之JTA事务
- 基于JTA的事务管理概念
- jdbc 事务管理
- JDBC事务管理
- JDBC事务管理
- jdbc事务管理
- Jdbc 事务管理
- 马丁.尼莫拉牧师 波士顿犹太人大屠杀纪念碑铭文 1945年
- 将固定格式的字符串替换成相应格式
- 模拟类似linux:find . -name "*.*" |xargs grep -i "搜索字符串"
- 点量视频网站真实视频地址解析嗅探组件内核 BT源码
- 描绘线程安全性
- hibernate事务管理 (jdbc jta)
- Item 48 TMP编程介绍
- 点量BT(DLBT)-- 致力于最专业的BT内核DLL库
- 获取android2.2的联系人及电话号码
- vc++ MFC 一些控件使用
- 内置类型表
- ZooKeeper 安装、配置
- Javascript闭包(Closure)
- 关于NandFlash坏块的一些理解(基于K9F2G08)