2015-01-22 1 views
0

У меня есть веб-приложение Java, использующее Spring, Hibernate и Wicket, подключающееся к базе данных MySQL, которую я хотел бы реорганизовать и разделить на несколько приложений. Я начал с использования мультимодульной системы Maven, но на самом деле у каждого из приложений был свой собственный цикл выпуска, поэтому я сейчас отбросил эти усилия, и я смотрю на создание отдельных проектов для каждого из них. Все они будут продолжать подключаться к одной базе данных, поэтому я собираюсь переместить классы моделей в собственный проект, который может использоваться как зависимость.Как структурировать проекты, когда несколько приложений используют одну и ту же базу данных

У меня есть несколько вопросов относительно этой установки:

  1. двигается классы модели в их собственном проект типичным решения для нескольких приложений/одной проблемы базы данных, или есть другой способ?

  2. Есть ли хороший способ обеспечения того, чтобы все приложения использовали ту же версию зависимости модели?

  3. Должен ли я включать любые базовые даос и службы в этот основной проект, который каждое приложение могло бы использовать или расширять, или я должен просто включить мой GenericHibernateDao и позволить каждому приложению создавать свои собственные daos и сервисы? Очевидно, я хочу, чтобы избежать изменения этого проекта в максимально возможной степени, поскольку в зависимости от этого потребуется новая версия всех приложений.

  4. Есть ли какая-либо конфигурация, связанная с Hibernate, мне нужно будет изменить, например, объединение пулов? Имеет ли значение, имеет ли каждое приложение свой собственный пул или же они должны делиться ими? На данный момент я не использую кеширование, но понимаю, хочу ли я, чтобы мне нужен распределенный кеш?

  5. Как бы я мог использовать конфигурацию приложения, такую ​​как параметры db, хост электронной почты, sms-шлюз и т. Д. Между приложениями? Есть ли способ определить их где-то, чтобы убедиться, что все они указаны в одном и том же дБ?

  6. Есть ли какие-либо другие проблемы, с которыми я могу столкнуться дальше по дороге с этой установкой, либо с Maven, либо во время развертывания? Любые советы или рекомендации, которым я должен следовать?

+2

Основываясь на # 1 и # 2, я думаю, что это была бы прекрасная возможность создать микросервис для уровня базы данных, который включает в себя методы обслуживания для выполнения всей обработки. Это гарантирует, что в разных системах никогда не будет разных моделей баз данных. Это также создаст хорошее разделение между приложением и базовыми данными. – mnd

+0

Поскольку вы не задаете конкретный вопрос и не получаете мнения людей ... это может быть закрыто. Однако я * думаю, что это хороший набор вопросов. Возможно, вы должны спросить об этом в Community Wiki? – Ascalonian

+0

@mnd не могли бы вы объяснить немного больше, как это будет работать? Разве это не означает, что изменение сервисов потребует новой версии всех приложений, зависящих от них? – Jack

ответ

0

Это был обычный сценарий со мной, что я обычно делается это .. - Даосы Conn управления бассейн, при сбое соответствующего кода можно управлять записью отдельного модуля [JAR] -. Вы можете затем используйте этот модуль в компонентах, как вы уже упоминали.

С этим у вас будет отдельный пул соединений для каждого вашего компонента.