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