嗨现在我在我的网络项目中使用JSF2+Hibernate
,但我知道Spring
是非常受欢迎且功能强大的框架(我是Spring新手)所以我想整合Spring
和Hibernate4
在我的项目中,所以我在谷歌寻找一些演示示例,但我注意到人们在会话初始化的代码下面使用的最多地方
public class UserDAO implements IUserDAO {
private SessionFactory sessionFactory;
/**
* Get Hibernate Session Factory
*
* @return SessionFactory - Hibernate Session Factory
*/
public SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* Set Hibernate Session Factory
*
* @param SessionFactory - Hibernate Session Factory
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
这是在每个SessionFactory
课程中创建DAO
对象的好方法吗?或者更好的方法来处理数据库连接?所以没有任何会话管理不善的机会。请帮我实施最好的方法。
感谢
答案 0 :(得分:1)
BaseDAO
BaseDAO
)sessionFactory
添加到BaseDAO
并制作protected SessionFactory sessionFactory
。您可以从sessionFactory
扩展的所有DAO访问BaseDAO
。
abstract public class BaseDAO {
protected SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
public class UserDAO extends BaseDAO implements IUserDAO {
...
}
答案 1 :(得分:0)
它会起作用。
@Transactional
public class ProductDaoImpl implements ProductDao {
private SessionFactory sessionFactory;
@Resource
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public void save(Product product) {
Session session = getSessionFactory().openSession();
try {
session.save(product);
} finally {
session.close();
}
}
}