2012-03-20 3 views
0

Мне нравится протестировать мое веб-приложение с помощью Hibernate на локальной установке Tomcat и развернуть его позже на сервере Glassfish.Как использовать тот же источник данных на Tomcat и Glassfish?

Подключение источника данных для Tomcat выглядит следующим образом:

<property name="connection.datasource">java:comp/env/jdbc/mydb</property> 

Glassfish путь:

<property name="connection.datasource">jdbc/mydb</property> 

Можно ли объединить эти два параметра, чтобы я мог использовать только один hibernate.cfg .xml для моей среды выполнения?

ответ

0

Лучшим подходом является использование двух (или более) конфигурационных файлов hibernate.cfg.xml, по одному для каждой среды и/или базы данных.

Большая часть конфигурационного файла может быть одинаковой для обоих файлов (особенно ссылки для файлов сопоставления). Только некоторые части, такие как строка подключения, пользователь/пароль или драйвер базы данных отличаются (если необходимо).

Затем вы указываете путь и имя файла конфигурации в качестве параметра запуска для своего приложения и используете его в Configuration.configure(<filename>).

Преимущества:
- нет проблем с разными строками подключения
- никаких проблем с различными паролями для тестирования и производства
- возможность использования различных баз данных (р ех Oracle и MySQL..).
- если таблица изменяется только в одной среде, вы можете легко ссылаться на другой файл сопоставления
=> и все это с тем же кодом Java для обеих сред.

+0

Thx для вашего предложения. Этот подход имеет один существенный недостаток. Каждое изменение конфигурации спящего режима должно выполняться дважды. Он подвержен ошибкам и не подходит для среды разработки. – Maibua

0

С копией и вставкой это не проблема, связанная с двумя конфигурационными файлами в спящем режиме.

Если вы абсолютно хотите иметь только один файл, вы создаете hibernate.cfg.xml со всем, что в обеих средах одинаково, и вы включаете второй файл, который содержит только строку подключения.

Например, как это в hibernate.cfg.xml:

<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" [ 
    <!ENTITY database_connection SYSTEM "databaseConnection.xml"> 
    ]> 

<hibernate-configuration> 

    <session-factory> 

&database_connection; 

    <property name="show_sql">true</property> 

    <mapping resource="..."/> 
    ... 
    <mapping resource="..."/> 
    </session-factory> 
</hibernate-configuration> 

Тогда вам нужен второй файл databaseConnection.xml, который содержит информацию о соединении, и который включается автоматически при чтении конфигурации. Этот файл у вас есть в двух версиях, один для Tomcat, один для Glassfish. Если вы измените свои сопоставления, вам нужно всего лишь сделать это в одном файле, но при загрузке программного обеспечения вы должны обратить внимание на второй файл.

Я лично считаю, что версия с двумя файлами hibernate.cfg.xml проще и гибче.

(Кстати, в том числе файлов является функцией XML, не функции спящего режима).

+0

Да, включая XML-файл с общими настройками, может быть для меня подход! Спасибо за ваш совет. Я не знал эту функцию xml. – Maibua

Смежные вопросы