3

私のシステムでは、ユーザーは任意の数の旅行を公開できます。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の初心者ですが、正しいアプローチを取っているかどうかわかりません。

ありがとう(ええ、私の英語は最悪です)。

4

1 に答える 1

1

getAllTrips 関数を User クラスに追加してみませんか? 関数が 1 つのユーザー オブジェクトで機能する限り、関数を User クラスに追加します。

UserManager クラスは、複数のユーザーに対してアクションを実行した場合に意味があります。

cancelTrip(int tripId) 
{ 
    // remove trip from all users 
} 
于 2011-12-08T15:51:07.100 に答える