![](/img/trans.png)
[英]Can I use an existing Hibernate SessionFactory to reinitialize my database schema?
[英]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.