DDD, JPA и многомодульный Maven - PullRequest
13 голосов
/ 28 ноября 2010

Я пытаюсь настроить и Maven многомодульный проект с Spring / JPA.Вот общий план.У меня есть корневой модуль с 5 дочерними модулями.

backoffice (root maven module)
|
-(maven module)-----core (this is where persistence.xml and entityManager stuff resides).
|
-(maven module)-----employee (employee related entities, controllers, etc.)
|
-(maven module)-----vendor (vendor related entities, controllers, etc.)
|
-(maven module)-----customer (customer related entities, controllers, etc.)
|
-(maven module)-----web (contains all the web stuff).

У меня есть все jpa-файлы в core / src / main / resources / META-INF (persistence.xml, spring-context с EntityManagerFactory, dataSource, так далее.).Идея в том, что я хочу поделиться информацией о персистентности между всеми подмодулями (сотрудником, продавцом и клиентом).

Проблема в том, что при запуске веб-приложения оно не может найти EntityMangerFactory.Если я настрою JPA-компоненты в каждом субмодуле (сотрудник, поставщик и клиент), то это сработает.

Как мне настроить все мои данные, связанные с постоянством, в ядре, а затем поделиться ими с другими модулями?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 01 декабря 2010

Хорошо, вот решение, которое я использовал в случае, если кому-то будет интересно.

http://labs.bsb.com/2010/11/configuring-modular-jpa-applications-with-spring/

Некоторые из респондентов спросили, почему я хотел бы настроить проект таким образом.Ну причина в модульности.Я хочу все в небольших тестируемых и развертываемых единицах.В конечном счете, мы интегрируем OSGI, чтобы клиент мог выбирать, какие модули он хочет установить.Каждый модуль должен иметь возможность работать самостоятельно.

0 голосов
/ 30 ноября 2010

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

Если вы хотите иметьодин веб-приложение и один менеджер сущностей, тогда почему вы хотите иметь отдельные модули для каждой группы сущностей?Просто держите сотрудников, поставщиков и клиентов в ядре вместе с менеджером сущностей, и все будет готово.

Или, дайте каждому свой менеджер сущностей (и, возможно, каждому свое веб-приложение)

...