次のpersistence.xmlがあり、接続URL、ユーザー、パスワードがすべてハードコーディングされているとします。
以下はHibernate3.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を使用する無数のWebアプリケーションを個別に構成する必要はありません。表示されているテキストファイルにパスワードを保存/管理したくないというセキュリティの問題に加えて。
JPAに関する限り、これらのJPAプロパティを動的に設定するにはどうすればよいですか?私は2つの答えを求めています:
JPAベンダーに依存しないソリューション(toplink、eclipselink、hibernateなど)の場合-これらの3つのプロパティを動的に設定できるJPA機能はありますか?
私が完全にHibernateに依存することを許可されている場合、可能なJPAのみの手段に加えて、Springフレームワーク(いたるところに触手がある巨大な怪物のように見える)を伴わずにこれを達成する方法はありますか?
JNDIに2セント/クイッド/ルピーを投入し、それを使用してpersistence.xmlプロパティの機能を置き換える方法を教えていただければ幸いです。しかし、それは質問の優先順位ではありません。