2009-02-28 13 views

回答

7

更好的方法是初始化或以其他方式將0123注入SessionFactory。然後,你可以做這樣的事情:

public abstract class AbstractHibernateDao<T extends Object> 
    implements AbstractDao<T> { 

    private SessionFactory sessionFactory; 

    public void setSessionFactory(SessionFactory sessionFactory) { 
     this.sessionFactory = sessionFactory; 
    } 

    protected Session getSession() { 
     return sessionFactory.getCurrentSession(); 
    } 

    public void save(T t) { getSession().save(t); } 

    public void update(T t) { getSession().update(t); } 

    ... 
} 

,而無需通過Session一切都過的地方。

+0

是的,我打算使用`EntityManagerFactory`。只是想知道是否曾經有過一個「EntityManager」被初始化並在服務外傳遞的情況。另外,通過`getSession()`方法,當前會話的何時/何時初始化? – jtgameover 2009-03-01 11:04:27

0

不,不應該使用它,但服務層可能會。假設你有兩種不同的方法(在不同的DAO中)需要封裝在同一個事務中(提交/回滾),你可能想要/必須使用同一個連接對象。

相關問題