2

Hibernate または Spring Framework と Hibernate の組み合わせ (Spring 2.5 と Hibernate 3.2 を使用する Java Web アプリで作業しています) は、Hibernate の hbm.xml マッピング ファイルの属性値を、eg ファイルからロードするメカニズムを提供しpropertiesますか?

より具体的には、一部のドメイン オブジェクトは、ほとんどの Hibernate マップ クラスとは異なるデータベース カタログにマップされます。したがって、catalog="secondaryCatalogName"属性を使用して、これらのクラスのカタログ名を指定します。

database.propertiesファイルと Springを使用してPropertyPlaceholderConfigurer、すべての Spring 構成でデフォルトおよびセカンダリ カタログ名を指定します。ただし、セカンダリ カタログ名を変更する必要がある場合は、これらのいくつかの hbm.xml ファイルのカタログ属性も変更する必要があります。${secondary.catalog}マッピング ファイルのカタログ属性などのプレースホルダーも使用できれば素晴らしいと思います。

これは可能ですか?

構成スニペットを使用した簡単な例を次に示します。

データベース構造

MySQL instance
- catalog: CatalogA
    - table: TableFoo
    - table: TableBar
    - ...
- catalog: CatalogB
    - table: TableBaz
    - ...

データベースのプロパティ

primary.catalog=CatalogA
secondary.catalog=CatalogB # <-- wish I could use this property in hbm.xml

SessionFactory -構成 (春):

<bean id="sessionFactory" class="...hibernate3.LocalSessionFactoryBean">
    <property name="mappingResources">
        <list>
            <value>Foo.hbm.xml</value>
            <value>Bar.hbm.xml</value>
            <value>Baz.hbm.xml</value>
            ...
        </list>
    </property> 

   ...

    <property name="hibernateProperties">
       <props>
           ...
           <prop key="hibernate.default_catalog">${primary.catalog}</prop>
       </props>
    </property>
</bean>                 

Foo.hbm.xml:

CatalogAのドメイン オブジェクトの Hibernate マッピング(プロパティにより、CatalogA エンティティ マッピングは常に正常に機能しhibernate.default_catalogます)

<hibernate-mapping>
    <class name="Foo" table="TableFoo">
    ...
    </class>
</hibernate-mapping>

Baz.hbm.xml:

CatalogBのドメイン オブジェクトの Hibernate マッピング(これは、catalog属性による問題です。別のセカンダリ カタログ名を使用する場合は、CatalogB エンティティのすべてのhbm.xml で変更する必要があります)

<hibernate-mapping>
    <class name="Baz" table="TableBaz" catalog="CatalogB">
    ...
    </class>
</hibernate-mapping>
4

1 に答える 1

0

ファイルを使用していhibernate.propertiesますか?

では、hibernate.default_schema、hibernate.default_catalogなどの他のプロパティを定義できます。オプションの構成プロパティ

于 2012-10-11T05:27:28.373 に答える