建议在Spring3.1.1(hibernate4)的DAO中命中数据库的方法?

时间:2012-04-18 10:52:28

标签: spring hibernate

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

由于

2 个答案:

答案 0 :(得分:4)

注入EntityManager并直接使用它。

public class MenuDaoImpl implements MenuDao {


@PersistenceContext
private EntityManager entityManager;

...

}

这是good example on the SpringSource blog

答案 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();
    }
}