在我的系统中,用户可以发布任意数量的旅行。 Mi User类(域对象)就像这样
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 */
}
}
它有效,但我认为我的用户类遭受'贫血域问题'(或贫血的POJO问题,它存在吗?):只有私有字段和'getters'和'setters'(以及我所有的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的新手,我不知道我是否采取了正确的方法。
谢谢(是的,我的英语很糟糕)。
答案 0 :(得分:1)
为什么不将getAllTrips函数添加到User类?只要您的函数在一个用户对象上工作,就可以向User类添加函数。
如果您对多个用户执行了操作,那么UserManager类就有意义了。
cancelTrip(int tripId)
{
// remove trip from all users
}