在Hibernate中使用事务

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

1.在Hibernate中使用JDBC事务

    Hibernate在Session控制下,在取得数据库连接后,就立刻取消自动提交模式,即Hibernate在执行Session的beginTransaction()方法后,就自动调用JDBC底层的setAutoCommit(false)方法。下面是一个在Hibernate中使用JDBC事务的例子:

    在hibernate.cfg.xml中配置JDBC事务


            
org.hibernate.transaction.JDBCTransactionFactory
    


测试类

public class Test {
	public static void main(String[] args) {
		Session session=null;
		Transaction tx=null;
		try{
			session=HibernateSessionFactory.getSession();
			Book book1=new Book();
			book1.setName("HTML5从入门到精通");
			book1.setAuthor("未来科技");
			book1.setPrice(67.4);
			
			Book book2=new Book();
			book2.setName("CSS3+DIV");
			book2.setAuthor("未来科技");
			book2.setPrice(49.3);
			
			tx=session.beginTransaction();
			session.save(book1);
			session.save(book2);
			tx.commit();
			tx=null;
			session.close();
		}catch(Exception e){
			if(tx!=null)
				tx.rollback();
			e.printStackTrace();
		}
	}

}

运行结果:


在Hibernate中使用事务_第1张图片


你可能感兴趣的:(hibernate)