我正在使用EJB 3.1和JPA 2.0。EJB和JPA設計問題
我給你舉一個例子來解釋我的疑惑,並要求提示什麼是好的做法,什麼不是。
假設我有一個用戶Facade的EJB。所以,你有這樣的事情:
@Stateless
public class UserRepository {
public User find(Long id) {
...do user lookup using entitymanager.
}
}
好了,現在讓我們說我從這個返回用戶實體,該實體擁有的評論集(註釋也作爲一個實體)。
我可以使用findCommentsByUser(Long userId)
方法創建註釋庫,或者我可以獲取用戶並調用getComments()
方法。可能是這種情況很簡單,但我多次面對這個決定,有時不知道什麼是最好的。
另外,假設我想添加評論,是否應將其添加到實體具有的評論集合以及實體是否已合併,或者我應該使用addComment(Long userId, Comment newComment)
方法嗎?
我正在尋找關於此的建議或最佳做法。如果您需要進一步澄清,請不要猶豫,問。
編輯:
我已經找到了評論到目前爲止有幫助,但是注意到這一點,它是不是真正的用戶和評論,我只是瞎編來解釋我的情況。這是關於混合兩種方法(我認爲不是這樣)還是比另一種更好。我喜歡「始終堅持存儲庫」的建議。但事實上,我在用戶實體中有一個fetchComments()
存儲庫方法和getComments()
爲同樣的功能創建入口點,所以我該如何處理? 此外,性能(1查詢與2查詢)並不重要,因爲我也將獲取用戶實體,所以它不像我實際上保存任何東西。