使DAO层独立于服务层

时间:2013-12-04 06:24:30

标签: java database oop design-patterns dao

如何使DAO层独立于Service层,以便在Db架构发生变化时我可以在DAO层处理它。

已编辑:我正在使用 Struts 2 JVM框架。 我已经开发了UI端,然后我意识到Db中缺少了一些东西。所以我必须在Db表中添加一些字段。并做一些规范化任务。它会影响服务层,因为我的模态类是由于Db架构的更改而发生的。那么,是否有任何最佳实践或任何设计模式,以便我可以独立管理我的DAO层和服务层。

1 个答案:

答案 0 :(得分:1)

class PersonService
{
   PersonDao  personDao = new PersonDaoOracleImpl();
   public void addPerson(Person person)
   {
     personDao.add(person);
   }
}

class PersonDaoOracleImpl implemets PersonDao{
    public void add(Person)
    {
       //db dependent code here 
    }
}

class Person{
   private String name;
   private String age;
   //getters and setters
}

interface PersonDao{
public void add(Person person);
}

假设你从Oracle迁移到mysql创建了一个PersonDaoMysqlImpl,我更喜欢将它自动装配(使用DependencyInjection)来服务类,所以你不需要触摸java类。其他明智的你必须改变

 PersonDao  personDao = new PersonDaoOracleImpl();  

服务类中的行

 PersonDao  personDao = new PersonDaoMysqlImpl();