【发布时间】:2011-12-04 13:14:53
【问题描述】:
在我的系统中,用户可以发布任意数量的旅行。小米用户类(域对象)是这样的
public class User {
private String name;
private String id;
/* More private fields */
/* getters and setters */
}
所以如果我想获取 id = 1 的用户的所有行程:
/* Domain Layer */
public class UserManager {
...
public Trip[] getAllTrips(int userId) {
dao.getAllTrips(userId);
}
...
}
/* DAL Layer */
public class UserDaoImpl implements IUserDao {
public Trip[] getAllTrips(int userId) {
/* jdbc here */
}
}
它有效,但我认为我的 User 类遇到“贫血域问题”(或贫血 POJO 问题,它存在吗?):只有私有字段和“getter”和“setter”(我所有的 POJO 都是相同的)。
我想到了另一种方法:
public class User {
/* More private fields */
private Trip[] trips;
/* getters and setters */
public Trip[] getTrips() {
return trips;
}
...
public void addTrip(Trip trip) {
// add the trip
}
}
还有
public class UserManager {
public Trip[] getAllTrips(int userId) {
User user = dao.getUser(userId);
return user.getTrips();
}
}
使用第二种方法,User 类具有更多功能,但行程不会存储在数据库中。
我错过了什么?我是 DAO 的新手,我不知道我是否采取了正确的方法。
谢谢(是的,我的英语很烂)。
【问题讨论】:
标签: dao pojo anemic-domain-model