|
|
|
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Пишу набор веб-приложений. Все эти веб-приложения будут обьединяться в один портал. Все эти приложения работают с одной и той же базой данных. Каждое веб-приложение иммет свой набор объектов. Некоторые объекты общие для разных веб-приложений. Такой вопрос. Как сделать, чтобы одна и та же конфигурация была общей для всех моих веб-проектов? В какие jar и war-файлы ложить hibernate.cfg.xml, *.hbm.xml, и persistense-классы? Думаю сделать следующее: 1) Файл hibernate.cfg.xml вынести в DBCommons.jar - это общий jar для всех проектов. 2) В DBCommons.jar прописать код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 4) В конструкторе соответствующих классов в war-файлах прописать: DBCommons.conf.addClass(MyObject.class); Тогда, когда загрузится web-приложение конструкторы соответствующих классов подгрузят Маппинг-файлы (*.hbm.xml), и при первой попытке загрузить информацию из базы произойдет создание SessionFactory. Но что-то мне такой подход не нравится. Слишком сложно и ненадежно. Неужели для каждого war-файла создавать свой hibernate.cfg.xml? Но если тогда нужно будет изменить хост базы данных, нужно править этот файлик во всех варах... :( Вобщем, подскажите пожалуйста, в какие jar и war-файлы ложить hibernate.cfg.xml, *.hbm.xml, и persistense-классы? Всем заранее большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 21:08 |
|
||
|
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
|
|||
|---|---|---|---|
|
#18+
Пара замечаний и предложений по вашей проблеме: 1) в классе Configuration имеется несколько перегруженных методов: Код: plaintext 1. 2. 3. Как видите, Вам никто не мешает использовать конфигурационный файл, который лежит где угодно, и использовать его в каком угодно числе приложений. 2) Фраза о том, что Вы пишите ряд web-приложений, наталкивает на мысль, что возможно Вам стоит вынести «слой доступа к данным» (который использует hibernate) в отдельное единственное приложение, и использовать из всех web-приложений этот «слой доступа к данным». Ну, собственно так, как Вы и собирались сделать. И это, по-моему, вполне надежное и правильное с архитектурной точки зрения решение. Ну а детали реализации надо прорабатывать, т.е. как и что разложить по jar-ам и war-ам не могу конкретно сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2006, 08:03 |
|
||
|
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Я так подумал, и мне тоже кажется, что действительно лучше всего вынести все конфиги хибернейта, а также все persistence-классы, на которые мапится база, в отдельный jar, и положить этот jar в classpath аппликейшн сервера. Правильным ли будет такое решение? И еще вопрос, который в связи с этим возникает. Если у меня persistence-классы будут вынесены в отдельный jar-файл, правильно ли будет включать бизнес-логику в эти persistence-классы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2006, 11:43 |
|
||
|
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
|
|||
|---|---|---|---|
|
#18+
автордействительно лучше всего вынести все конфиги хибернейта, а также все persistence-классы, на которые мапится база, в отдельный jar, и положить этот jar в classpath аппликейшн сервера. Правильным ли будет такое решение? Хороший вопрос… Лично я считаю, что класть свои библиотеки в класспас аппликэйшн-сервера не очень хорошая идея (особенно если речь идет о common/lib). С другой стороны если библиотека используется несколькими web-приложениями то там ей самое место авторИ еще вопрос, который в связи с этим возникает. Если у меня persistence-классы будут вынесены в отдельный jar-файл, правильно ли будет включать бизнес-логику в эти persistence-классы? Тоже интересный вопрос. Не вдаваясь в схоластику по поводу того, что есть бизнес-логика, можно сказать, что общую для всех web-приложений логику тоже надо выносить отдельно, ну а специфичную, я думаю, можно и оставить в конкретном web-приложении. Помещать ли общую логику в персистентные классы? Нет, наверное. Я бы в Вашем случае два jar-а сделал бы и поместил бы их (ну например в common/lib тот же): xyz-data.jar – здесь хибернэйт утилс, персистентые классы, маппинги, конфигурации и пр. xyz-logic.jar – здесь общая для всех приложений бизнес-логика Ну и постарался бы чтобы конкретное web-приложение работало только с xyz-logic, а xyz-data.jar только бы из этого xyz-logic.jar использовалось. Изложил только свое личное мнение. Может и не прав. Думаю, что у другим могут быть другие мнения по этому поводу… Может кто еще выскажется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2006, 12:37 |
|
||
|
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
|
|||
|---|---|---|---|
|
#18+
pretender авторИ еще вопрос, который в связи с этим возникает. Если у меня persistence-классы будут вынесены в отдельный jar-файл, правильно ли будет включать бизнес-логику в эти persistence-классы? Тоже интересный вопрос. Не вдаваясь в схоластику по поводу того, что есть бизнес-логика, можно сказать, что общую для всех web-приложений логику тоже надо выносить отдельно, ну а специфичную, я думаю, можно и оставить в конкретном web-приложении. Помещать ли общую логику в персистентные классы? Нет, наверное. Я бы в Вашем случае два jar-а сделал бы и поместил бы их (ну например в common/lib тот же): xyz-data.jar – здесь хибернэйт утилс, персистентые классы, маппинги, конфигурации и пр. xyz-logic.jar – здесь общая для всех приложений бизнес-логика Ну и постарался бы чтобы конкретное web-приложение работало только с xyz-logic, а xyz-data.jar только бы из этого xyz-logic.jar использовалось. Изложил только свое личное мнение. Может и не прав. Думаю, что у другим могут быть другие мнения по этому поводу… Может кто еще выскажется? Хорошо. Пускай у нас есть persistence-класс Client. Зачем мне создавать еще один класс ClientLogic, когда и логику, и данные клиента можно объединить в одном классе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2006, 16:29 |
|
||
|
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
|
|||
|---|---|---|---|
|
#18+
авторХорошо. Пускай у нас есть persistence-класс Client. Зачем мне создавать еще один класс ClientLogic, когда и логику, и данные клиента можно объединить в одном классе? Надо понять, какую логику Вы хотите зашить в класс Client, и тогда надо разбираться. Обычно, я persistent-класс Client оставляю чистым бином (с минимумом кода). А для работы с ним создаю какой-нибудь ClientManager (бизнес-логика), который может быть вынесен отдельно. Как правило этот класс ClientManager за время проекта довольно сильно распухает (но конечно интерфейс можно, и даже нужно общий для всех менеджеров сохранить). Вот как-то так я это понимаю. Но могу ошибаться, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2006, 08:25 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=706&tid=2148425]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 358ms |

| 0 / 0 |
