私のシステムでは、ユーザーは任意の数の旅行を公開できます。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の問題、存在しますか?)に苦しんでいると思います:プライベートフィールドと「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();
}
}
この2番目のアプローチでは、Userクラスにはより多くの機能がありますが、トリップはデータベースに保存されません。
私は何かが足りないのですか?私はDAOの初心者ですが、正しいアプローチを取っているかどうかわかりません。
ありがとう(ええ、私の英語は最悪です)。