Что такое модель домена Java? - PullRequest
30 голосов
/ 06 февраля 2011

Я изучаю книгу Spring, и они упоминают модель домена Java.
Что это?

Ответы [ 6 ]

37 голосов
/ 06 февраля 2011

Модель предметной области (термин совсем не специфичен для Java) - это класс, который моделирует что-то в проблемной области, в отличие от класса, существующего по техническим причинам.

Часто нужны экземпляры модели предметной области.сохраняемые в базе данных и в Java, они обычно соответствуют спецификации Java Beans, то есть имеют методы get и set для представления отдельных свойств и конструктор без параметров.Spring и другие инфраструктуры позволяют вам получать доступ к этим свойствам непосредственно в ваших JSP.

Например, в приложении для магазина некоторые классы вашей доменной модели могут быть Product, Order, ShoppingCart и Customer.

9 голосов
/ 06 февраля 2011

A Модель предметной области - концептуальная модель проблемной области.Под «моделью домена Java» они подразумевают только классы Java, представляющие эту модель.В этой концепции нет ничего специфического для java.

См. Также Домен-управляемый дизайн для подхода, позволяющего сосредоточить свое развитие на потребностях бизнес-домена.

7 голосов
/ 29 октября 2011

Ответ Михаэля Боргвардта " Модель предметной области (термин совсем не специфичен для Java) является классом " неверен. Я очень удивлен, что многие согласны с этим ответом.

Доменная модель - это все классы, которые моделируют поведение решения. Это минимум, необходимый для достижения требуемого поведения. Модель предметной области свободна от пользовательского интерфейса и постоянных функций (если проблема не связана с пользовательским интерфейсом или постоянством).

Я видел модель предметной области, реализованную в одном классе, но это не дизайн объектно-ориентированного решения. В объектно-ориентированной доменной модели каждый концепт имеет свой собственный класс, который реализует поведение, требуемое для этого концепта, и содержит необходимые поля для поддержания состояния класса.

4 голосов
/ 25 августа 2013

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

" Экземпляры модели домена часто необходимо сохранять в базе данных, а в Java они обычно соответствуют спецификации Java Beans, то есть имеютустановите методы для представления отдельных свойств и конструктора без параметров. Spring и другие платформы позволяют вам получать доступ к этим свойствам непосредственно в ваших JSP"

. Доменные модели часто являются результатом проектирования, управляемого доменом.Проектирование на основе домена является ключом к хорошей и надежной модели домена.Я предлагаю прочитать книгу Эрика Эванса «Домен, управляемый дизайном», чтобы лучше понять.

Классы доменной модели имеют информацию, связанную с ними, но поведение, на мой взгляд, важнее данных в этом контексте.Большая ошибка при проектировании, управляемом доменом, заключается в создании классов данных, которые представляют данные объекта домена, такого как customer, и предоставляют только общедоступные методы получения и установки для атрибутов клиента.Эти объекты, как правило, просто имитируют структуру вашей базы данных, и в результате фактическая бизнес-логика с большей вероятностью будет находиться в доменных службах, в результате чего модель анемичного домена .Эта модель ближе к Transaction Script , чем модель предметной области.

4 голосов
/ 06 февраля 2011

Давайте начнем с примера. Вы создаете приложение, которое будет использоваться некоторыми людьми в вашей местности. При проектировании системы вы называете этих людей пользователями вашей системы. Вы также должны управлять списком ролей для этих людей в системе и информацией для аутентификации. Итак, вы решили создать концептуальную сущность в системе. Эта концептуальная сущность дополнительно отображается на объекте User в вашем программном решении (вашем приложении). Теперь, когда вы представляете свое приложение, вы описываете этот объект User как модель домена. Основная идея этого термина заключается в том, что только. Подробнее об этом можно прочитать в следующей ссылке в Википедии .

0 голосов
/ 13 мая 2019

С точки зрения непрофессионала, ваш доменный пакет является объектным представлением элементов, которые вам, прежде всего, но необязательно должны отображать поля пользовательского интерфейса, такие как имя пользователя, client_info, специфичные для решения pojos и т. Д. Классы, содержащиеся в пакете домена, будут использоваться в DAO Пакет (DATA ACCESS OBECT), где дао будет запрашивать базу данных, сопоставлять эти поля с классами в домене и возвращать их. Или вы можете использовать фреймворк, такой как hibernate, и вернуть этот объект, где запросы к БД будут обрабатываться фреймворком, таким как hibernate.

Этот ответ более специфичен для MVC и Java, но подробно описывает одну из возможных реализаций.

...