使用DAO模式,您是否将EntityManager或Session公开为参数?

jtg*_*ver 3 java orm

在标准的webapp中是否有过将一个EntityManager或Session作为参数传递给DAO调用的情况,即findPersonByName(String name, Session session)?或者是否应该在实施过程中抽象会议的开幕式和闭幕式?

Wil*_*ler 7

更好的方法是初始化或以其他方式注入DAO 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); }

    ...
}
Run Code Online (Sandbox Code Playgroud)

无需Session遍布整个地方.