0

我正在将我的项目从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 中访问数据库的推荐方法是什么?

谢谢

4

2 回答 2

4

注入一个 EntityManager 并直接使用它。

public class MenuDaoImpl implements MenuDao {


@PersistenceContext
private EntityManager entityManager;

...

}

这是SpringSource 博客上的一个很好的例子

于 2012-04-18T11:02:25.457 回答
2

从 Hibernate 3.0.1 开始,Spring 建议使用 .SessionFactory而不是HibernateTemplate.

来自Spring 3.0 HibernateTemplate API 文档

注意:从 Hibernate 3.0.1 开始,事务性 Hibernate 访问代码也可以用普通的 Hibernate 样式编码。因此,对于新开始的项目,请考虑采用基于 SessionFactory.getCurrentSession() 的标准 Hibernate3 编码数据访问对象的风格。

例子:

public class MenuDao {

    @Autowired
    private SessionFactory sessionFactory;

    public List<Menu> getMenus() {
        return (List<Menu>) sessionFactory.getCurrentSession.createQuery("from Menu").list();
    }
}
于 2012-04-18T20:01:03.897 回答