簡體   English   中英

如何在運行時更改Hibernate的SessionFactory的默認架構設置?

[英]How can I change Hibernate's SessionFactory's default schema setting at runtime?

我們使用XML配置Session Factory bean。 默認會話名稱是從代碼的資源文件夾中的屬性文件中讀取的。 出於新的目的,我需要能夠在運行時將默認架構屬性更改為其他內容。 我不知道怎么辦。

會話工廠在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的上下文中拉出來,或者提供一個Properties類來(希望)覆蓋默認的會話屬性,而沒有別的什么,然后快樂地繼續前進。

不幸的是,當我嘗試從上下文中獲取會話工廠bean時,它的類型為SessionFactoryImpl而不是AnnotationSessionFactoryBean 這意味着setHibernateProperties()方法對我不可用。

我不確定是否可以致電ALTER SESSION 由於會話工廠是由我們的DAO類在庫中獲得的,因此,我沒有一種簡單的方法將會話工廠包裝有必要的代碼。

有任何想法嗎?

創建多個JPA配置文件,每個要支持的環境一個,然后將其導入到spring配置中。

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

對我來說,有一個用於prod,test和每個用戶的文件,通過設置environment.name系統屬性,可以加載正確的JPA配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM