2009-07-10 64 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。

相關問題