同じデータベース サーバーで 2 つの異なるスキーマを使用する Java/spring/hibernate プロジェクトがあります (2 番目のスキーマは読み取り専用です)。両方のスキーマの名前を定義する database.properties ファイルをセットアップしました。
default.catalog=testdb1
db2.catalog=testdb2
ApplicationContext.xml では、プロパティ ファイルからデフォルトのスキーマを次のように設定できます。
<property name="hibernateProperties"><props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.default_catalog">${default.catalog}</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
</props>
しかし問題は、現在、両方のスキーマにアクセスする必要がある休止状態のオブジェクトがいくつかあることです。これを実現するために、「catalog」プロパティを使用して、2 番目のスキーマを hibernate マッピングに次のように定義しました。
DBObjectXX.hbm.xml
<class name="fi.company.project.object.DBObjectXX" table="TestTableFromDB1">
<id name="id" type="int">
<column name="ID"/>
<generator class="native"/>
</id>
<join table="TestTableFromDB2" catalog="testdb2"> <-- Change this ..
<key column="ID" not-null="true" unique="true"/>
<property name="propertyYY" type="string">
<column name="PropertyYY" not-null="true"/>
</property>
</join>
</class>
これはそのままでうまくいきます。しかし、時々、スキーマ名を変更する必要があり (テストなどで)、すべてのマッピング ファイルを検索して置換する必要があります。私がやりたいのは、次のような database.properties ファイルからスキーマ名を取得することです。
<class name="fi.company.project.object.DBObjectXX" table="TestTableFromDB1">
<id name="id" type="int">
<column name="ID"/>
<generator class="native"/>
</id>
<join table="TestTableFromDB2" catalog="${db2.catalog}"> <-- .. to this or something similar
<key column="ID" not-null="true" unique="true"/>
<property name="propertyYY" type="string">
<column name="PropertyYY" not-null="true"/>
</property>
</join>
</class>
これを行う方法についてのアイデアはありますか?