Динамическая установка свойств сохраняемости JPA

Допустим, у меня есть следующий файл persistence.xml с URL-адресом подключения, пользователем и паролем, жестко закодированным -.

Следующее для Hibernate 3.2. Для Hibernate 3.5++ мы должны изменить «hibernate.connection» на «javax.persistence». Но позвольте мне задать этот вопрос независимо от литералов «hibernate.connection» или «javax.persistence».

<persistence-unit name="obamacare" transaction-type="RESOURCE_LOCAL">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
  <exclude-unlisted-classes>false</exclude-unlisted-classes>
  <properties>
    <property name="hibernate.archive.autodetection" value="class, hbm"/>
    <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="hibernate.connection.url" value="blah blah blah"/>
    <property name="hibernate.connection.username" value="careuser"/>
    <property name="hibernate.connection.password" value="carepass"/>
    <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
    <property name="hibernate.show_sql" value="true"/>
  </properties>
  </persistence-unit>
</persistence>

Однако нам нужно динамически установить URL, пользователя и пароль. Существует предлагаемый сервер аутентификации, который обслуживает URL-адрес, пользователя и пароль. Так что нам не нужно индивидуально настраивать мириады веб-приложений, которые используют ту или иную форму jdbc, hibernate или JPA. Помимо проблемы безопасности, связанной с нежеланием хранить/управлять паролями в видимых текстовых файлах.

Что касается JPA, как я могу динамически устанавливать эти свойства JPA? Я ищу два набора ответов:

  1. Для решения, которое не зависит от поставщика JPA (toplink, eclipselink, hibernate и т. д.)-Есть ли какие-либо функции JPA, которые позволили бы мне динамически устанавливать эти три свойства?

  2. Если мне позволено полностью зависеть от Hibernate, помимо возможного единственного пути JPA, есть ли способ добиться этого без использования среды Spring (, которая кажется огромным чудовищем с щупальцами повсюду )?

Я был бы в восторге, если бы вы также захотели добавить два цента/фунтов/рупий в JNDI и то, как я мог бы использовать его для замены функциональности свойств persistence.xml. Однако это не является приоритетом вопроса.

11
задан Blessed Geek 27 July 2012 в 20:35
поделиться