我正在使用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查询)并不重要,因为我也将获取用户实体,所以它不像我实际上保存任何东西。