JPA和DAO - 标准方法是什么?

Joh*_*nak 6 spring dao jpa

我正在使用JPA/Hibernate和Spring开发我的第一个应用程序.我在DAO课上的第一次尝试看起来像这样:

@Repository(value = "userDao")
public class UserDaoJpa implements UserDao {
    @PersistenceContext
    private EntityManager em;

    public User getUser(Long id) {
        return em.find(User.class, id);
    }

    public List getUsers() {
        Query query = em.createQuery("select e from User e");
        return query.getResultList();
    }
}
Run Code Online (Sandbox Code Playgroud)

我还发现了一些使用JpaDaoSupport和的例子JpaTemplate.你更喜欢哪种设计?我的例子有什么问题吗?

Phi*_*das 6

我会说你的方法听起来很完美.就个人而言,我不使用JpaDaoSupportJpaTemplate因为您可以使用EntityManager和Criteria Queries 完成所需的一切.

引用JpaTemplateJavaDoc:

JpaTemplate主要作为JdoTemplate和HibernateTemplate的兄弟存在,为人们提供相同的风格.对于新启动的项目,请考虑采用标准JPA样式的编码数据访问对象,基于通过Spring bean定义或JPA PersistenceContext注释注入的"共享EntityManager"引用.