Hibernate 4.1 と Spring 3.1 を使用しています。
自分自身を含む他のオブジェクトへの参照を持つ次の User クラスを検討してください。私が定義したすべての hibernate マッピングは LAZY であるため、参照オブジェクトを jsp またはコードで使用する場合にのみロードします。
class User {
private User createdBy;
private Department department;
private Project project;
.....
.....
}
問題は、リフレクションを使用して深いシリアル化を行う JSON 表現を返したい場合です。以下は私のコントローラーコードです。
@ResponseBody
public User getUser(int id) {
User user = [fetch user from service];
return user;
}
私も自己参照を持っているので、無限ループに入ります。
この問題を回避するための解決策は何ですか? 代わりに UserDTO を返す DTO パターンを使用する必要があることはわかっていますが、そのようなメソッドをいくつ作成しますか。たとえば、ある場所では基本的なユーザー属性のみが必要であり、別の場所ではユーザーとその部門が必要であり、別の場所ではユーザーと部門とプロジェクトが必要です。
公開する必要があるそのようなメソッドの数。これを解決する他の方法はありますか?