2009-07-10 131 views
4

了解Spring最难的事情之一就是Spring支持多种解决同一问题的方法。Spring DaoSupport和@PersistanceContext EntityManager?

所以在我的应用程序使用EntityManager的注射用@PersistanceContext注释,例如:

@Repository 
public class JpaDao extends JpaDaoSupport implements Dao { 

    @PersistenceContext(unitName = "PersistanceUnit", type = PersistenceContextType.EXTENDED) 
    private EntityManager em; 

是这种做法延伸的JpaDaoSupport(这需要一个EntityManager注入)兼容吗?对我来说,它看起来像解决同一问题的两种不兼容的方法,但我希望得到一些对Spring有更多经验的人的建议。

如果我不应该扩展JpaDaoSupport,应该如何使用@PersistenceContext方法构建我的DAO?

回答

4

你是正确的,它们是两个不同接近同一个问题。我认为,哪一个“更好”是一个品味问题。使用注解有利于避免代码中的Spring导入依赖项,甚至Spring JavaDoc建议将它们用于新的JPA项目。 的JpaDaoSupport有使Spring对JPA相当于其支持其他ORM策略支持(的HibernateDaoSupportJdbcDaoSupport的TopLinkDaoSupport等)。在这些情况下,基于注释的注入不是一种选择。

1

注入EntityManager的你只需要添加一个定义

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 

可以从公报博客获取有关此主题的更多信息,this post

+0

我明白如何注入EntityManager,我工作得很好。我的问题更多的是关于Spring DAO的最佳实践。 – 2009-07-11 06:06:03

0

我宁愿推荐你不要延长JpaDaoSupport,春天会为你做所有事情。按照diega建议的链接获取更多信息,我遵循相同的博客来升级我的应用程序以支持spring-jpa。

相关问题