4

Spring を理解する上で最も難しいことの 1 つは、Spring が同じ問題に対する複数のアプローチをサポートしていることです。

したがって、私のアプリケーションでは、 @PersistanceContext アノテーションを使用して注入された EntityManager を使用しています。次に例を示します。

@Repository
public class JpaDao extends JpaDaoSupport implements Dao {

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

このアプローチは JpaDaoSupport の拡張(EntityManager への注入が必要) と互換性がありますか? 私には、同じ問題を解決するための 2 つの互換性のないアプローチのように見えますが、Spring の経験が豊富な人からのアドバイスが欲しいです。

JpaDaoSupport を拡張しない場合、@PersistenceContext アプローチを使用して DAO を構築するにはどうすればよいですか?

4

3 に答える 3

4

それらが同じ問題に対する2つの異なるアプローチであることは間違いありません。どちらが「良い」かは好みの問題だと思います。アノテーションを使用すると、コード内で Spring のインポート依存関係を回避できるという利点があり、JpaDaoSupportの Spring JavaDoc でさえ、新しい JPA プロジェクトでアノテーションを使用することを提案しています。JpaDaoSupportは、Spring の JPA のサポートを他の ORM 戦略 ( HibernateDaoSupportJdbcDaoSupportTopLinkDaoSupportなど) のサポートと同等にするためにあります。そのような場合、注釈ベースの注入はオプションではありません。

于 2009-07-15T15:27:22.597 に答える
1

EntityManager を注入するには、次の定義を追加するだけです

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

このトピックの詳細については、公式ブログのこの投稿を参照してください。

于 2009-07-11T05:48:17.993 に答える
0

JpaDaoSupport を拡張しないことをお勧めします。Spring がすべてを行います。詳細については、diega によって提案されたリンクに従ってください。Spring - jpa をサポートするようにアプリケーションをアップグレードするためにたどったのと同じブログです。

于 2013-07-07T07:58:13.747 に答える