2012-04-18 2 views
2

Я новичок в JPA и CDI, и я пытаюсь создать корпоративное приложение, используя эти фреймворки.JPA CDI Injecting DAO в Entity

Получаю, как я могу вводить в фасоль и держать все в порядке и без гражданства. Я также понимаю, что JPA загружает отношения и т. Д. Для меня, так что мне больше не нужно об этом беспокоиться. Я все еще использую свои DAO для конкретных методов поиска и, конечно, для создания новых объектов.

Я понимаю, что я не хочу вводить материал в мои объекты, поскольку они управляются JPA, и мне нужно использовать ключевое слово new для создания нового объекта (вместо загрузки).

Я использую для управления моими объектами с другими классами, например, если у нас есть Пользователь и группа, я использую компонент без состояния для управления группой (создаем новые, нахожу и т. Д.), И эта фаза без состояния использует мой DAO для извлечения и отправки данных.

Я использую объект Group для управления пользователями (может быть, это неправильно?), Но я не хочу вводить DAO в группу, поскольку это сущность. Я знаю, что в этом дизайне что-то не так, но я не могу найти для этого наилучшую практику.

Должны ли все классы управления быть EJB? Я привык создавать классы домена для своей логики, должен ли я отбросить эту концепцию, поместить всю свою логику в EJB и использовать Entities для хранения данных?

ответ

1

Я использую объект Group для управления пользователями (возможно, это не так?), Но я не хочу вводить DAO в группу, так как это предприятие. I знаю, что что-то не так в этом дизайне, но я не могу найти лучшую практику для этого.

Если Group имеет User с, карта это как коллекция (возможно OneToMany).

Используйте другой отдельный компонент для инкапсуляции операций сохранения, например. a GroupService или GroupDao. В этом компоненте вы будете вводить EntityManger, который отвечает за сохранение («управлять пользователями и группами»).

This tutorial должно дать вам начало.

Должны ли все классы управления быть EJB?

Конечно, не обязательно. Но это немного сложно (читай: невозможно), чтобы рассказать, не зная ваших требований. Я предлагаю вам добавить отдельные вопросы с дополнительной информацией, тогда проще обсудить вашу проблему ...

Как правило: попробуйте отделить объекты (Group, User) от бизнес-логики и операций настойчивости (GroupService,. ..Dao).

Я нашел this book дает отличный обзор и обсуждение о шаблоне J2EE.

+0

На данный момент моя группа имеет отношение (список ) и UserDao, который содержит entitymanager. Каков был мой вопрос, должен ли мой класс Group иметь UserDao или должен ли я иметь EJB, управляющий Dao? Также должен ли я ставить свою логику в EJB вместо моих сущностей? – Rob