hibernate事务

事务的概念

事务:指一个单元的工作,这些工作要么全做,要么全部不做。

Hibernate中使用事务

Hibernate本身并不具备事务管理能力。Hibernate对JDBC进行了轻量级的封装。Hibernate将底层的JDBCTransaction和JTATransaction进行了封装,再在外面套上Transaction,其实是通过委托底层的JDBC或JTA来实现事务处理功能的。

hibernate事务配置

在配置文件中,需设置相应的hibernate的事务工厂类。如果不进行配置,hibernate默认系统使用JDBC事务。

<hibernate-configuration>

	<session-factory>
	    <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionoFactory</property>
            <!-- <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionoFactory</property> -->
		... ...
	</session-factory>

</hibernate-configuration>

1、  在hibernate中使用事务的步骤

		Transaction t = session.beginTransaction();
		t.commit();
		t.rollback();

2、  在hibernate中使用JDBC事务

hibernate在Session控制下,在建立数据库连接后,就立刻取消自动提交模式,即Hibernate在执行Session的beginTransaction()方法后,就自动调用JDBC层的setAutoCommint(false);方法。

这也就是说,我们一开始从SessionFactory获得的session,其自动提交属性就已经被关闭(AutoCommit=false),下面的代码将不会对数据库产生任何效果:

session = sessionFactory.openSession();   
session.save(user);   
session.close();  
//在hibernate中使用JDBC事务
public static void saveObject(Object obj){
	Session session = null;
	Transaction t = null;
	try{
		session = HibernateSessionFactory.getSession();
		t = session.beginTransaction();
		session.save(obj);
		t.commit();
		t = null;
		session.close();
	}catch(Exception e){
		if(t != null)
			t.rollback();  //保存失败,回滚事务
		throw e;
	}finally(session != null){
		session.close();
	}
}
3、在hibernate中使用JTA事务

JTA 提供了跨Session 的事务管理能力(跨数据库)。这一点是与JDBC Transaction 最大的差异。

try{
	tx.begin();
	//多个数据库的session操作;
	//session1….
	//session2….
	tx.commit();
}catch(Exception e){
	tx.rollback();                                                                                                                                throw e;
}
hibernate事务相关文章:http://www.iteye.com/topic/177988



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值