在阅读了 Fowler 的 PoEAA 之后,我真的很困惑什么是设计数据访问层的好方法或自然方法。我曾经让数据访问对象返回一个简单的 java bean,例如:
public class Person {
private long id;
private String name;
private Gender gender;
//... setters and getters
}
而数据访问对象就像
public class PersonDataAccessImpl implements PersonDataAccess {
public Person getPersonById(long id) throws DataAccessException {
//... select the database
}
public void addPerson(Person person) throws DataAccessException {
//... insert into the database
}
...
}
Person 对象将在整个应用程序中使用,包括上面的数据访问层和 Web 表示层。但根据 PoEAA,数据访问层通常位于各层的底部。让DAO依赖bean对象(Person),这不是一个好办法吗,后面会用到领域层、服务层和表现层?以及如何设计域层,因为在我看来,域对象和简单的 java bean 之间的区别在于,简单的 java bean 只缺少域中的行为。