В моей системе пользователь может публиковать любое количество поездок. Mi Класс пользователя (объект домена) выглядит так
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, существует ли она?): Имеет только закрытые поля и «получатели» и «сеттеры» (и все мои 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 и не знаю, правильно ли я поступаю.
Спасибо (да, мой английский отстой).