DAO模式如何使我们的业务类与持久性松散耦合?

时间:2013-09-24 19:39:53

标签: java

我有一个业务类,它调用实现DAO接口的DAOimpl类,现在如何减少耦合。 DAO用于减少与持久性逻辑的耦合。我们应该做些什么来减少DAO和业务逻辑之间的耦合。

1 个答案:

答案 0 :(得分: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等类(依赖于)。相反,他们只看到更多业务(模型)类,如AppleFruityException

通过这种方式,您可以更改底层实现,例如使用Web服务而不是直接使用数据库,而无需更改界面。