Как поменять свойства hibernate.cfg.xml? - PullRequest
7 голосов
/ 25 сентября 2010

У меня есть Hibernate файл конфигурации hibernate.cfg.xml, в котором жестко заданы имена свойств, такие как:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">mysecretpassword</property>
    ...
  </session-factory>
</hibernate-configuration>

Я хочу поменять местами такие вещи, как имя пользователя и парольв .properties -файл.Так что я получу следующее:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.username">${jdbc.username}</property>
    <property name="hibernate.connection.password">${jdbc.password}</property>
    ...
  </session-factory>
</hibernate-configuration>

Как я могу это сделать?Для источника данных в Spring я могу использовать его в своем applicationContext.xml:

<bean id="propertyConfigurer"
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
      p:location="/WEB-INF/jdbc.properties" />

Что эквивалентно Hibernate?

Ответы [ 3 ]

4 голосов
/ 02 сентября 2012

Удалите параметры конфигурации из hibernate.cfg.xml и объявите следующее:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:jdbc.properties</value>
        </list>
    </property>
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
    <property name="hibernateProperties">
        <value>
            hibernate.dialect=${hibernate.dialect}
        </value>
    </property>
</bean>
3 голосов
/ 26 сентября 2010

Если это опция, вы можете удалить имя пользователя и пароль из hibernate.cfg.xml и объявить их в файле hibernate.properties, который вы поместили в путь к классам. Но вам действительно нужно удалить их из файла конфигурации XML, так как он переопределяет свойства из файла свойств «прежних версий». Из документации:

3,7. XML-файл конфигурации

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

Если это не вариант (и если вы не можете настроить Hibernate в своем файле конфигурации Spring), вам придется обрабатывать это во время сборки, используя некоторые функции фильтрации из инструмента сборки (Ant, Maven, и т.д.).

0 голосов
/ 20 декабря 2011

объект конфигурации имеет метод readProperties (хотя я не знаю, что вы описали).Если вы планируете использовать пользовательские свойства или переопределять hibernate.cfg.xlm, сначала обязательно вызовите configure (), а затем setProperty или setProperties.

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