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

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

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

Студворк — интернет-сервис помощи студентам
Доброго времени суток, помогите, пожалуйста, разобраться в следующем вопросе.
Вопрос такой: как правильно реализовать 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.06.2016, 23:07
Ответы с готовыми решениями:

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

Как реализовать: @$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. last(],Y):- Y=H. last(,Y):- last(T,Y)....

8
19.06.2016, 18:23

Не по теме:

Почему final?

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

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

Не по теме:

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

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

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

Не по теме:

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

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

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

Лень от разного может быть - может быть. Если по прошествии времени снова тянет на "это дело", то возможно причина в: перетрудился, неэффективно обучался, много сил уходит на другие дела...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.06.2016, 21:13
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru