跳到主要內容

Java 基本的Hibernate roll back 語法




 package cse.test.service;  
 import org.hibernate.SQLQuery;  
 import org.hibernate.Session;  
 import org.hibernate.Transaction;  
 import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
 import org.springframework.transaction.annotation.Isolation;  
 import org.springframework.transaction.annotation.Propagation;  
 import org.springframework.transaction.annotation.Transactional;  
 public class RollBackImpl extends HibernateDaoSupport {  
       /*  
        * / 透過程式實作rollback 
        */  
       public void rollBackMethod() {  
             Session session = null;  
             Transaction tx = null;  
             try {  
                   session = this.getSession();  
                   tx = session.beginTransaction();  
                   String sql = "update TB_USER set USER_NAME=? where USER_ID=? ";  
                   SQLQuery query = session.createSQLQuery(sql);  
                   query.setParameter(0, "Mark");  
                   query.setParameter(1, "A123456789");  
                   query.executeUpdate();  
                   String sql2 = "update TB_ADDRESS set ADDR=? where USER_ID=? ";  
                   SQLQuery query1 = session.createSQLQuery(sql2);  
                   query1.setParameter(0, "TOKYO");  
                   query1.setParameter(1, "A123456789");  
                   query1.executeUpdate();  
                   tx.commit();  
             } catch (Exception ex) {  
                   tx.rollback(); // 捕捉exception做rollback  
             } finally {  
                   if (session != null) {  
                         session.close();  
                   }  
             }  
       }  
       /**  
        * 透過@Transactional宣告自動實作rollback  
        * session會自行關閉,不用再寫程式實作  
        *   
        */  
       @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)  
       public void rollBackMethod2() {  
             Session session = null;  
             try {  
                   session = this.getSession();  
                   String sql = "update TB_USER set USER_NAME=? where USER_ID=? ";  
                   SQLQuery query = session.createSQLQuery(sql);  
                   query.setParameter(0, "Mark");  
                   query.setParameter(1, "A123456789");  
                   query.executeUpdate();  
                   String sql2 = "update TB_ADDRESS set ADDR=? where USER_ID=? ";  
                   SQLQuery query1 = session.createSQLQuery(sql2);  
                   query1.setParameter(0, "TOKYO");  
                   query1.setParameter(1, "A123456789");  
                   query1.executeUpdate();  
             } catch (Exception ex) {  
                   System.out.println(ex);  
             }  
       }  
 }  

留言