Hibernate核心類用法-使用Transaction管理事務

一個典型的事務應該使用下面的形式 在建立完Session對象後即便用beginTransaction()啓動事務 今後開始直到commit()之間的代碼 都會處於同一個事務中 這兩個函數之間全部的數據庫代碼都會在commit()時一次性提交 在提交時 若是某一句代碼執行出現異常 就會回滾這一次事物之間的全部執行代碼css

 

  1. public User getUser(String username) throws HibernateException {
  2.         Session session = null;
  3.         Transaction tx = null;
  4.         User user = null;
  5.         try {
  6.             session = HibernateSessionFactory.currentSession();
  7.             tx = session.beginTransaction();
  8.             Query query = session.createQuery("from User where username=?");
  9.             query.setString(0, username.trim());
  10.             user = (User)query.uniqueResult();
  11.             query = null;
  12.             tx.commit ();
  13.         }catch(HibernateException e){
  14.             throw e;
  15.         }finally{
  16.             if (tx!=null) {
  17.                 tx.rollback();
  18.             }
  19.             HibernateSessionFactory.closeSession();
  20.         }
  21.         return user;
  22.     }

 

若是Session拋出異常 事務必須回滾 Session也會被廢棄 在異常發生後 Session的內部狀態可能會與數據庫失去同步數據庫

 

除了這些  Hibernate的核心類操做 還有session

使用Session對數據庫的操做函數

使用Query進行HQL查詢spa

使用Criteria進行條件查詢對象

相關文章
相關標籤/搜索