Java EE предполагает что-то, называемое Domain Model. Модель домена состоит из объектов, представляющих объекты, где Entity - это то, что имеет идентичность, относящуюся к бизнесу. (Например, если вы работаете в банке, ваш домен может включать такие вещи, как учетные записи, клиенты, холдинги и займы).
Вот цитата из Бауэра и король Java Persistence с Hibernate, описывающая моделью домена:
3.1.1. Анализ бизнес-домена
Урок разработки программного обеспечения начинается с анализа проблемы домен (подразумевается, что кода устаревшего кода или старой базы данных уже нет ).
На этом этапе вы с помощью экспертов проблемной области определите основные объекты, имеющие отношение к программной системе. Субъекты , как правило, понимают пользователи системы: оплата, клиент, заказ, товар, ставка и т. Д. Некоторые объекты могут быть абстракциями менее конкретных вещей, о которых думает пользователь, например, алгоритм ценообразования , но даже они обычно могут быть понятны пользователю . Все эти объекты находятся в концептуальном представлении бизнеса , который мы иногда называем бизнес-моделью. Разработчики и архитекторы объектно-ориентированного программного обеспечения анализируют бизнес-модель и создают объектно-ориентированную модель, все еще на концептуальном уровне (нет Java-код). Эта модель может быть такой же простой, как мысленный образ, существующий , только в разуме разработчика, или может быть такой же сложной, как диаграмма классов UML , созданная при помощи программного обеспечения автоматизированного программирования (CASE) , такого как ArgoUML или TogetherJ. Простая модель, выраженная в UML, равна , показанной на рисунке 3.1.
Эта модель содержит объекты, которые вы обязательно найдете в любой обычной аукционной системе : категория, элемент и пользователь. Объекты и их отношения (и, возможно, их атрибуты) представлены в этой модели проблемной области. Мы называем это объектно-ориентированной моделью объектов сущностей из проблемной области, охватывающей только те объекты, которые представляют интерес для пользователя, модель домена. Это абстрактное представление реального мира .
Мотивационная цель, лежащая в основе анализа и проектирования модели домена , заключается в том, чтобы зафиксировать суть бизнес-информации для цели приложения .
В идеале (в подходе называется Domain-Driven Design) эти объекты домена имеют 2 функцию: они не знают о проблемах инфраструктуры, как настойчивость или сделки, и они содержат логику реализации переходов состояний, которые возникают, когда они манипулируют во время обработки бизнеса; комбинация этих средств означает, что бизнес-логику можно тестировать отдельно от инфраструктуры. В реальном мире более типично видеть anemic domain objects, которые не содержат никакой бизнес-логики, а бизнес-логика заканчивается в transaction scripts.
В любом случае идея заключается в том, что у вас есть модель домена, состоящая из постоянных объектов. Существует некоторая конфигурация (аннотации или файлы XML или что-то еще), которые сопоставляют сущности и их атрибуты с таблицами и столбцами в базе данных и которые сопоставляют отношения между сущностями. Существует объектно-реляционный сопоставитель (JPA является стандартом для реализации ORM, Hibernate - одна из таких реализаций), которая знает, как преобразовывать данные вперед и назад между представлением базы данных и представлением объекта-графа, чтобы разработчик мог манипулировать объектами вместо этого строк базы данных.
Для людей, которые утверждают, что бизнес-логика не должна быть частью модели домена, вот еще одна цитата из Java Persistence с Hibernate книги, в разделе 3.1.2:
Сущности в модель домена должна инкапсулировать состояние и поведение. Например, пользовательский объект должен определить имя и адрес клиента и логику, необходимую для расчета стоимости доставки для элементов (данному конкретному клиенту). Модель домена - это богатый объект модели со сложными ассоциациями, взаимодействиями и наследованием . Интересное и подробное обсуждение объектно-ориентированных методов работы с моделями доменов можно найти в «Шаблонах архитектуры корпоративных приложений» (Fowler, 2003) или в области управления доменами (Evans, 2003).
В этой книге нам нечего сказать о бизнес-правилах или о о поведении нашей модели домена. Это не потому, что мы считаем это неважным; скорее, эта проблема в основном ортогональна проблеме упорства. Это состояние наших сущностей является постоянным, поэтому мы концентрируем наше обсуждение того, как наилучшим образом представить состояние в нашей модели домена , а не о том, как представлять поведение. Например, в этой книге нас не интересует, как рассчитывается налог на проданные товары или , как система может утверждать новую учетную запись пользователя.Мы заинтересованы в в том, как отношения между пользователями и предметами, которые они продают, - представлены и сделаны постоянными. Мы перейдем к этой проблеме в более поздних главах , всякий раз, когда мы ближе рассмотрим многоуровневый дизайн приложения и разделение логики и доступа к данным.
Похоже, что разработчики Hibernate считают его жизнеспособной альтернативой, хотя, по-видимому, это не обычный подход к типичной предпринимательской деятельности.
Связанный: [Бизнес-объект] (http://en.wikipedia.org/wiki/Business_object), который технически известен как [Объект домена] (http://stackoverflow.com/q/10394667/1065197) и [ Объект домена сохранения] (http://stackoverflow.com/q/9735914/1065197). –
легкий вес означает, что он доступен вне контейнера JEE (JPA). означает, что вы можете использовать его с любым приложением J2se (tomcat, spring или standalone java app и т. д.). Это связано с тем, что базовая реализация часто предоставляется автономной структурой ORM, такой как спящий режим. В этом случае вы будете использовать «управляемый приложением EntityManager» и не сможете использовать распространение транзакционного контекста. (за исключением случаев использования весны, которая играет роль контейнера jee) – Gab