事务管理

一. JDBC事务管理

  获取数据库连接conn

  conn.setAutoCommit(false); // 开启事务

  对数据库操作的代码块

  conn.commit(); // 提交事务

 

二. Hibernate封装JDBC后事务管理

try {
  Session session = HibernateUtil.currentSession();
  Transaction tx = session.beginTransaction();  //在默认情况下,开启一个JDBC事物
  for(int i=0; i<10; i++)  {
    Student stu = new Student();
    stu.setName("Student" + i);
    session.save(stu);
  }
  tx.commit(); //提交事务
  session.close();
} catch(Exception e) {…
  tx.rollback();   //事务回滚
}

 

 

三. Spring事务管理机制
Spring提供的事务管理可以分为两类:编程式的和声明式的,编程式,其实就是在代码里面来控制,像Hibernate操作数据一样,开启事务,提交事务,这种方式有一定的局限性,所以我们一般是用声明式来配置我们的事务。

 

声明式事务的四种事务管理器:

1.Spring提供的JDBC事务

如果程序是使用JDBC做的持久化,使用该方式配置

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
     <property name="dataSource" ref="dataSource" />
 </bean>

 

2.Spring提供的Hibernate事务

 如果程序是使用Hibernate做的持久化,使用该方式配置

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory" ref="sessionFactory" />
</bean>

 

3.Spring提供的Java持久化API事务(JPA)

 如果程序是使用JPA做的持久化,使用该方式配置

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
     <property name="sessionFactory" ref="sessionFactory" />
</bean>

 

4.Spring提供的Java原生API事务

 如果程序没有使用以上所述的事务管理,或者是跨越了多个事务管理源(比如两个或者是多个不同的数据源),则需要使用JtaTransactionManager

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
     <property name="transactionManagerName" value="java:/TransactionManager" />
</bean>

 

 

 

 

posted @ 2018-08-21 16:47  风栖林木  阅读(126)  评论(0编辑  收藏  举报