Hibernate主鍵生成策略與save()方法是否發sql語句的研究

    public class SessionFlushTest extends TestCase {  
      
    /**
    * 測試uuid主鍵生成策略
    */  
    public void testSave1() {  
       Session session = null;  
       Transaction tx = null;  
       try {  
        session = HibernateUtils.getSession();  
        tx = session.beginTransaction();  
      
        User1 user = new User1();  
        user.setName("李四");  
        user.setPassword("123");  
        user.setCreateTime(new Date());  
        user.setExpireTime(new Date());  
         
        //因爲user的主鍵生成側路採用的是uuid,所以調用完成save後,只是將user納入到了session的管理  
        //不會發出insert語句,但是id已經生成,session中existsInDatebase狀態爲false  
        session.save(user);  
         
        //調用flush,hibernate會清理緩存,執行sql  
        //如果數據庫的隔離級別設置爲爲提交讀,那麼我們可以看到flush過的數據  
        //並且session中existsInDatebase狀態爲true  
        session.flush();  
         
        //提交事務  
        //默認情況下commit操作會先執行flush清理緩存,所以不用顯示的調用flush  
        //commit後數據是無法回滾的  
        tx.commit();  
       }catch(Exception e) {  
        e.printStackTrace();  
        tx.rollback();  
       }finally {  
        HibernateUtils.closeSession(session);  
       }  
    }  
      
    /**
    * 測試native主鍵生成策略
    */  
    public void testSave2() {  
       Session session = null;  
       Transaction tx = null;  
       try {  
        session = HibernateUtils.getSession();  
        tx = session.beginTransaction();  
      
        User2 user = new User2();  
        user.setName("張三1");  
        user.setPassword("123");  
        user.setCreateTime(new Date());  
        user.setExpireTime(new Date());  
         
        //因爲user的主鍵生成策略爲native,所以調用session.save後,將執行insert語句,返回有數據庫生成的id  
        //納入了session的管理,修改了session中existsInDatebase狀態爲true  
        //如果數據庫的隔離級別設置爲爲提交讀,那麼我們可以看到save過的數據  
        session.save(user);  
        tx.commit();  
       }catch(Exception e) {  
        e.printStackTrace();  
        tx.rollback();  
       }finally {  
        HibernateUtils.closeSession(session);  
       }  
    } 
發佈了64 篇原創文章 · 獲贊 5 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章