Я использую EJB 3.1 и JPA 2.0.
Я приведу вам пример, чтобы объяснить мои сомнения и попросить подсказки о том, что является хорошей практикой, а что нет.
Допустим, у меня есть EJB, это пользовательский Фасад. Итак, у вас есть что-то вроде этого:
@Stateless
public class UserRepository {
public User find(Long id) {
...do user lookup using entitymanager.
}
}
Хорошо, теперь давайте скажем, что я возвращаю сущность User из этого и что у этой сущности есть коллекция комментариев (комментарий также является сущностью).
У меня может быть хранилище комментариев с методом findCommentsByUser(Long userId)
, или я могу получить пользователя и вызвать метод getComments()
. Может быть, этот случай прост, но я сталкивался с этим решением много раз, иногда не зная, что лучше.
Кроме того, допустим, я хочу добавить комментарий, должен ли я добавить его в коллекцию комментариев, в которой находится сущность, и в которой объединена сущность, или у меня должен быть метод addComment(Long userId, Comment newComment)
?
Я ищу советы или лучшие практики по этому поводу. Если вам нужны дополнительные разъяснения, пожалуйста, не стесняйтесь спрашивать.
EDIT:
Я нашел комментарии до сих пор полезными, однако заметьте это, это не совсем о пользователях и комментариях, я просто придумал это, чтобы объяснить мою ситуацию. Речь идет о том, удобно ли смешивать оба подхода (что я думаю, что нет), или один лучше другого. Мне понравилось предложение "всегда сохраняться через репозитории". Но тот факт, что у меня есть метод репозитория fetchComments()
и getComments()
в пользовательской сущности, создает точки входа для той же функциональности, так как мне с этим справиться?
Кроме того, производительность (1 запрос против 2 запросов) не очень важна, потому что я буду также извлекать пользовательскую сущность, так что на самом деле я ничего не сохраняю.