0

私はDAOインターフェースを実装するDAOimplクラスを呼び出すビジネスクラスを持っていますが、これは結合をどのように減らしていますか。DAO は、永続化ロジックとの結合を減らすために使用されます。DAO とビジネス ロジックの結合を減らすために何をすべきか。

4

1 に答える 1

4

あなたのビジネス クラスは、他のビジネス クラスと対話したいと考えています。DAO が提供するインターフェイスは、ビジネス クラスへの依存関係のみを必要とする必要があります。

例えば

public class Apple extends Fruit {}

public interface AppleDao extends Dao { // can be refactored even more
    public void add(Apple apple) throws FruityException;
}

そして実装

public class AppleDaoHibernateImpl implements AppleDao {
    @Inject
    private Session session; // Hibernate session or JPA EntityManager, etc. 

    public void add(Apple apple) throws FruitException {
        // do something with session, entityManager, etc.
    }
}

ビジネス クラスが を使用する場合AppleDao、SQL、I/O など、インポートする (依存する) 必要があるクラスは表示されません。Apple代わりに、や などのより多くのビジネス (モデル) クラスのみが表示されFruityExceptionます。

このようにして、インターフェイスを変更せずに、データベースを直接使用する代わりに Web サービスを使用するなど、基礎となる実装を変更できます。

于 2013-09-24T19:43:31.843 に答える