0

私は問題があります。私は親DAOを持っています:

public abstract class ParentDAO<T> {
    @PersistenceContext
    private EntityManager entityManager;

    public EntityManager getEntityManager() {
        return entityManager;
    }

    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    private EntityManager em() {
        if (entityManager == null)
            throw new IllegalStateException("The entity manager is not set");

        return entityManager;
    }
}

そこから別の子 DAO を拡張します。子 DAO で子エンティティを操作したい場合、親クラスから EntityManager オブジェクトを取得するか、entityManager オブジェクトの宣言を protected に変更する必要がありますが、これは不適切な OOP 設計です。これを行う別の方法はありますか?100 個の DAO の子がある場合、新しい子ごとに親 DAO から entityManager を取得する必要があるためです。

4

1 に答える 1

0

はい、春を使用している場合は、「親」属性を使用してベース Bean ID を指定できます。この場合、エンティティ マネージャーで 1 つのベース Bean オブジェクトを作成し、サブクラス化された Bean 宣言で親として追加します。 Spring Bean 宣言で extends + parent を探します。

于 2011-04-07T13:30:21.377 に答える