2017-03-08 50 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是正確的方法?當我在事務服務方法中使用它時,那麼將會是好的,但有人可能會在事務之外使用它,然後發生異常。

創建在懶惰集合上操作的方法是不好的做法嗎?

回答

2

一個好的界面可以很容易做正確的事情,但很難做錯的事情。

在您的示例中,任何客戶端代碼都必須知道您提到的前提條件。這在默認情況下沒有錯,但是很容易導致只會在運行時顯示的問題。

這裏最小的事情可能是改善這個類/方法的名稱,以至少使前提條件更「明確」。