2017-03-08 25 views
0

メソッドがレイジーコレクションを操作する必要があるのだろうか? 例:メソッドはレイジーコレクションを操作する必要がありますか?

public class Person { 
    // lazy collection 
    @ManyToOne(fetch = FetchType.LAZY) 
    private List<Friend> friends; 

    public Friend findFriend(String name) { 
     //pseudo code 
     return friends.findByName(name); 
    } 
} 

findFriendは正しい方法ですか?私はそれをトランザクションサービスメソッドで使用するとOkになりますが、誰かがトランザクション外で使用して例外が発生する可能性があります。

遅延コレクションで操作するメソッドを作成するのは悪い習慣ですか?

答えて

2

適切なインターフェイスを使用すると、正しいことを簡単に実行できますが、間違ったことをするのは難しくなります。

例では、クライアントコードは、あなたが言及した前提条件について知っていなければなりません。これはデフォルトで間違っているわけではありませんが、実行時にしか表示されない問題が発生しやすくなります。

このクラス/メソッドの名前を改善して、少なくともその前提条件をより明示的にすることができます。

関連する問題