Spring DaoSupport和@PersistanceContext EntityManager?
理解Spring最困难的事情之一就是Spring支持针对同一问题的多种方法。
所以在我的应用程序中,我使用注入的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?
你是对的,他们是解决同一问题的两种不同方法。 我认为哪一个“更好”是一个品味问题。 使用注释有利于避免代码中的Spring导入依赖性,甚至Spring JavaDoc for JpaDaoSupport建议将它们用于新的JPA项目。 JpaDaoSupport是为了让Spring支持JPA,相当于它对其他ORM策略的支持( HibernateDaoSupport , JdbcDaoSupport , TopLinkDaoSupport等)。 在这些情况下,基于注释的注射不是一种选择。
要注入EntityManager,您只需添加下一个定义
您可以从官方博客的这篇文章中获得有关此主题的更多信息
我宁愿建议你不要延长JpaDaoSupport,spring会为你做一切。 按照diega建议的链接获取更多信息,我跟随的同一个博客升级我的应用程序以支持spring-jpa。