2016-04-13 19 views
0

Session Factory BeanをXMLで構成します。既定のセッション名は、コードのリソースフォルダにあるプロパティファイルから読み取られます。新しい目的のために、実行時にデフォルトのスキーマプロパティを別のものに変更する必要があります。私はどのように把握することはできません。実行時にHibernateのSessionFactoryのデフォルトスキーマ設定を変更するにはどうすればよいですか?

次のようにセッションファクトリは、XML配線に作成されます。

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.default_schema">${oracle.default_schema}</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
      <prop key="hibernate.generate_statistics">false</prop> 
      ... other properties ... 
     </props> 
    </property> 
    ... lots of mapping files and annotated classes ... 

私はおそらく(私が望んだ)デフォルトのセッションを無効にするには、プロパティのクラスを提供し、Springのコンテキストのうちのセッションファクトリを引くと考えていました財産と何も、そして私の方法で幸せに続けなさい。

残念ながら、セッションファクトリBeanをコンテキストから取得しようとすると、そのタイプはSessionFactoryImplであり、AnnotationSessionFactoryBeanではありません。つまり、setHibernateProperties()メソッドは私には利用できません。

ALTER SESSIONのいずれかに電話することができるかどうかわかりません。セッションファクトリはライブラリのDAOクラスによって取得されるため、セッションファクトリを必要なコードで簡単にラップする方法はありません。

アイデア?

答えて

0

サポートする環境ごとに1つずつ、複数のJPA設定ファイルを作成し、それをバネ構成にインポートします。私にとって

<import resource="classpath:services-environment-${environment.name}.xml"/> 

、PROD用のファイルには、テストは、そこだし、ユーザごとに、environment.nameシステムプロパティを設定することで、正しいJPAの構成がロードされます。

関連する問題