Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
1

Как реализовать Domain-сущность?

17.06.2016, 23:07. Показов 475. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, помогите, пожалуйста, разобраться в следующем вопросе.
Вопрос такой: как правильно реализовать Domain-сущность, которую будет вызывать сервлет? Какие являются best practicies? Какое мнение у Мартина Фаулера?

Поясню на простом примере:
Допустим имеем EJB-приложение, классы StudentDAO и GroupDAO (студенты и группы, к которым они относятся).
А в сервлете примерно такой код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException
{
        // Считываем GET-параметры
        ...
 
        // Вызываем методы бизнес-логики
        final List<Group> groups = groupDAO.getAll();
        final List<Student> students = studentDAO.filter(//... разные параметры фильтрации...);
 
        // Отправляем на клиент ответ, либо перехваченные ошибки
        ...
}
То есть в коде обращаемся к DAO-классам напрямую.
Будет ли правильно написать примерно так:

Java
1
2
3
4
5
6
7
8
9
10
@EJB
GroupDomain groupDomain;
 
@EJB
StudentDomain studentDomain;
 
...
 
final List<Group> groups = groupDomain.getAll();
final List<Student> students = studentDomain.filter(//... разные параметры фильтрации...);
либо как-то должен быть один объект Domain, но как тогда получаться и список всех групп и отфильтрованный список студентов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2016, 23:07
Ответы с готовыми решениями:

Hibernate как сохранить сущность
Здраствуйте. Есть задание. Создать базу данных «Банк» с таблицами «Пользователи», «Транзакции»,...

Как реализовать: @$fp = fsockopen("domain.ru", 80, $errno, $errstr, 3);
Привет Возникла необходимость сделать аналог приведенного ниже кода на asp. Но с сокетами нет...

The variable is not bound in this clause и Basic domain becomes reference domain
Вот так ошибок нет: ... firlast(L,X,Y):- first(L,X), last(L,Y). first(,X):- X=H....

domain.com и www.domain.com в разных папках
Доброе время суток) Подскажите пожалуйста, как реализовать чтобы domain.com и www.domain.com...

8
MLPMan
19.06.2016, 18:23
  #2

Не по теме:

Почему final?

0
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
19.06.2016, 18:30  [ТС] 3
Потому что эта переменная не будет меняться.
По факту я ее записываю в объект request как аттрибут и перенаправляю запрос в jsp.

Я так понимаю хоть в сервлете всего 2 вызова метода из условно "бизнес-логики", но все равно это плохо. Потому что DAO скорее относится к слою Persistance Layer (или прослойка между Domain и Persistance). А слоя Domain у меня как бы и нету http://martinfowler.com/bliki/... ering.html . Вот вопрос - как мне сделать Domain-слой\сущность и обращаться к ней из сервлета?
1
MLPMan
19.06.2016, 22:22
  #4

Не по теме:

wikkk, я не сильно в этом рублю, пардоньте. Как я понял, каждый раз будет создаваться новый экземпляр этого EJB, тогда всё норм. (насчёт final)

0
155 / 154 / 53
Регистрация: 30.04.2016
Сообщений: 321
19.06.2016, 22:30 5
Так да, создаешь например UniversityService или UniversityManager какой-нибудь, который инжектишь через интерфейс. И он уже будет лезть в слой DB. Необязательно что будет тупо делегация методов из dao в service, ты можешь получать данные и потом их как-то обрабатывать.
0
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
19.06.2016, 22:35  [ТС] 6
MLPMan, Эти два бина помечены у меня как Stateless - соотв-но контейнер EJB создаст пул этих объектов и будет сам управлять их жизненным циклом.
Вот вводная статейка по EJB http://j4sq.blogspot.ru/2011/10/ejb-1.html Или лучше начать с проcтых обучалок по EJB.

Добавлено через 4 минуты
ninjacut, получается в этом UniversityDomainService будут в том числе такие методы как getAllGroups и getStudentsByFilter(...)?
А это не предпосылка к антипаттерну God-класс?
0
155 / 154 / 53
Регистрация: 30.04.2016
Сообщений: 321
19.06.2016, 22:49 7
wikkk, да, если там не несколько методов то лучше разделить на отдельные классы.
1
MLPMan
19.06.2016, 23:28
  #8

Не по теме:

wikkk, пасиб, позанимаюсь на днях, если опять лень не одолеет.

0
1 / 1 / 1
Регистрация: 26.09.2015
Сообщений: 40
20.06.2016, 21:13  [ТС] 9
ninjacut, А какое лучше придумать название? BookDomainAccess, GenreDomainAccess?
Абстрактно как-то, мне кажется, если бы встала более конкретная задача, то соответствующий объект сам пришёл "на ум"...

MLPMan, часто советуют как что-то прочитал в книге - сразу накидать примерчик\нескл. строчек кода - так лучше запоминается. Или пилить свой проект на гитхабе и туда дополнять. Заодно к резюме будет. Ну тут смотря какую задачу выбрать, и чтоб интерес был.

Лень от разного может быть - может быть. Если по прошествии времени снова тянет на "это дело", то возможно причина в: перетрудился, неэффективно обучался, много сил уходит на другие дела...
0
20.06.2016, 21:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2016, 21:13
Помогаю со студенческими работами здесь

Пролог, списки. Ошибка "Basic domain becomes reference domain: integer"
Понимаю, что ошибка в логике. Не могу понять, как правильно при компиляции программы выдает ошибку...

Сайт доступен по www.domain.ru/index.php, но недоступен по www.domain.ru
Здравствуйте, возникла проблема: Сайт доступен по www.domain.ru/index.php, но недоступен по...

Адрес вида domain/folder/etc вместо domain/?folder=etc
Здравствуйте. Есть ли способ сделать адресную строку более удобочитаемой, например,...

Ошибки Pow: Domain error и Log10: Domain error
Здравствуйте, возникла проблема, при компиляции программы выдаёт ошибки, указанные в заголовке,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru