powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
6 сообщений из 6, страница 1 из 1
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
    #33911686
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Пишу набор веб-приложений. Все эти веб-приложения будут обьединяться в один портал. Все эти приложения работают с одной и той же базой данных. Каждое веб-приложение иммет свой набор объектов. Некоторые объекты общие для разных веб-приложений.

Такой вопрос. Как сделать, чтобы одна и та же конфигурация была общей для всех моих веб-проектов? В какие 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.
   class  DBCommons{
     public   static  Configuration conf =  new  Configuration();
     private   static  SessionFactory sessionFactory;

     public   static  SessionFactory getSessionFactory() {
         if (sessionFactory ==  null ){
            sessionFactory =  conf.configure().BuildSessionFactory();
        }
         return  sessionFactory;
    }
3) В каждом war файле описать мапинги этого проекта: <object>.hbm.xml
4) В конструкторе соответствующих классов в war-файлах прописать:
DBCommons.conf.addClass(MyObject.class);

Тогда, когда загрузится web-приложение конструкторы соответствующих классов подгрузят Маппинг-файлы (*.hbm.xml), и при первой попытке загрузить информацию из базы произойдет создание SessionFactory.
Но что-то мне такой подход не нравится. Слишком сложно и ненадежно.

Неужели для каждого war-файла создавать свой hibernate.cfg.xml? Но если тогда нужно будет изменить хост базы данных, нужно править этот файлик во всех варах... :(

Вобщем, подскажите пожалуйста, в какие jar и war-файлы ложить hibernate.cfg.xml, *.hbm.xml, и persistense-классы?

Всем заранее большое спасибо!
...
Рейтинг: 0 / 0
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
    #33912009
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пара замечаний и предложений по вашей проблеме:
1) в классе Configuration имеется несколько перегруженных методов:
Код: plaintext
1.
2.
3.
	 public  Configuration configure(String resource)  throws  HibernateException;
	 public  Configuration configure(URL url)  throws  HibernateException;
	 public  Configuration configure(File configFile)  throws  HibernateException;

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

2) Фраза о том, что Вы пишите ряд web-приложений, наталкивает на мысль, что возможно Вам стоит вынести «слой доступа к данным» (который использует hibernate) в отдельное единственное приложение, и использовать из всех web-приложений этот «слой доступа к данным». Ну, собственно так, как Вы и собирались сделать. И это, по-моему, вполне надежное и правильное с архитектурной точки зрения решение. Ну а детали реализации надо прорабатывать, т.е. как и что разложить по jar-ам и war-ам не могу конкретно сказать.
...
Рейтинг: 0 / 0
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
    #33912703
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!

Я так подумал, и мне тоже кажется, что действительно лучше всего вынести все конфиги хибернейта, а также все persistence-классы, на которые мапится база, в отдельный jar, и положить этот jar в classpath аппликейшн сервера.

Правильным ли будет такое решение?

И еще вопрос, который в связи с этим возникает. Если у меня persistence-классы будут вынесены в отдельный jar-файл, правильно ли будет включать бизнес-логику в эти persistence-классы?
...
Рейтинг: 0 / 0
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
    #33912952
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автордействительно лучше всего вынести все конфиги хибернейта, а также все 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 использовалось.

Изложил только свое личное мнение. Может и не прав. Думаю, что у другим могут быть другие мнения по этому поводу… Может кто еще выскажется?
...
Рейтинг: 0 / 0
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
    #33913828
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, когда и логику, и данные клиента можно объединить в одном классе?
...
Рейтинг: 0 / 0
Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
    #33915361
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторХорошо. Пускай у нас есть persistence-класс Client. Зачем мне создавать еще один класс ClientLogic, когда и логику, и данные клиента можно объединить в одном классе?

Надо понять, какую логику Вы хотите зашить в класс Client, и тогда надо разбираться.
Обычно, я persistent-класс Client оставляю чистым бином (с минимумом кода). А для работы с ним создаю какой-нибудь ClientManager (бизнес-логика), который может быть вынесен отдельно. Как правило этот класс ClientManager за время проекта довольно сильно распухает (но конечно интерфейс можно, и даже нужно общий для всех менеджеров сохранить).
Вот как-то так я это понимаю. Но могу ошибаться, конечно.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как сделать, чтобы конфигурация hibernate была общей для многих war-приложений?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]