我正在从 spring 3.0.5& hibernate 3 到 spring 3.1.1& hibernate 4.1
我广泛使用 org.springframework.orm.hibernate3.support.HibernateDaoSupport 。具体的 HibernateTemplate ;就像在这个片段中一样:
public class MenuDaoImpl extends HibernateDaoSupport implements MenuDao, Serializable {
public List<Menu> getMenus() {
return getHibernateTemplate().find("from Menu menu");
}
//etc
}
但我读到HibernateTemplate 不再推荐使用。
那么,在Spring3.1.1的DAO中命中数据库的推荐方法是什么?
由于
答案 0 :(得分:4)
注入EntityManager并直接使用它。
public class MenuDaoImpl implements MenuDao {
@PersistenceContext
private EntityManager entityManager;
...
}
答案 1 :(得分:2)
从Hibernate 3.0.1开始,Spring建议使用SessionFactory
,而不是HibernateTemplate
。
来自Spring 3.0 HibernateTemplate API docs:
注意:从Hibernate 3.0.1开始,事务性Hibernate访问代码可以 也可以用简单的Hibernate风格编码。因此,对于新开始 项目,考虑采用标准的Hibernate3编码风格 数据访问对象,而不是基于 SessionFactory.getCurrentSession()。
示例:
public class MenuDao {
@Autowired
private SessionFactory sessionFactory;
public List<Menu> getMenus() {
return (List<Menu>) sessionFactory.getCurrentSession.createQuery("from Menu").list();
}
}