2011-09-04 28 views
0
Session session = HibernateUtil.getSessionFactory().openSession(); 
    Transaction transaction = null; 
    try { 
     transaction = session.beginTransaction(); 
     Consultants consultants = new Consultants(); // 1 
     consultants.setUsername("Rahul");    // 2  
     consultants.setPass("rahul");     // 3 
     session.save(consultants);      
     transaction.commit(); 
    } catch (HibernateException e) { 
     System.out.println("Exception:"+e.getMessage()); 
     transaction.rollback(); 
     e.printStackTrace(); 
    } finally { 
     session.close(); 
    } 

在上面的代碼中,除了1,2和3語句外,所有代碼對於每種方法都保持不變。每次重寫上面的代碼是否有任何最好的方式,即一次又一次地向我們提供相同的代碼?Hibernate code..some confusion

謝謝!

回答

0

意思是所有的代碼你的意思是交易處理和回滾機制? 我真正的字應用程序一般交易正在被視爲另一層,我們一般稱這是關注的分離。

如果您使用Spring,您只需使用AOP將您的事務處理移動到Java代碼之外。 沒有春天還有其他的方式來處理事務管理

這裏是鏈接到春天文檔事務管理 transaction management

3

不知道什麼樣的重複,你在抱怨什麼,但你可以創建一個「通用「方法來保存任何映射實體:

public void save(Object entity) { 

    Session session = HibernateUtil.getSessionFactory().openSession(); 
    Transaction transaction = null; 
    try { 
     transaction = session.beginTransaction(); 
     session.save(entity);      
     transaction.commit(); 
    } catch (HibernateException e) { 
     System.out.println("Exception:"+e.getMessage()); 
     transaction.rollback(); 
     e.printStackTrace(); 
    } finally { 
     session.close(); 
    } 
} 

然後當你想要保存一個顧問使用此方法:

Consultants consultants = new Consultants(); 
    consultants.setUsername("Rahul"); 
    consultants.setPass("rahul"); 

    save(consultants); 

此致

0

交易= session.beginTransaction(); session.save(entity);
transaction.commit();

要避免上述所有持久性相關的重複方法,您必須通過HibernateTemplate or JpaTemplate處理上述重複對我們來說。並且爲了保存操作,您只需撥打save(object)即可將您的數據保存到持久性中,而無需擔心其執行情況。