2013-05-30 32 views
1

我希望我的Spring 3.1 + JPA + Hibernate Web應用程序在首次運行時擁有數據庫屬性的設置嚮導。我爲我的模型層使用JPA註釋,並且所有配置均以xml格式(即dispatcher-servlet.xml,application-context.xml)。我有一個預先存在的mysql.jdbc.properties文件,在部署期間讀取到應用程序上下文。我想允許用戶在Web瀏覽器中輸入數據庫屬性(數據庫名稱,URL,用戶名,密碼),然後應用程序生成數據庫表。我怎麼做?帶有用於數據庫配置的安裝嚮導的Spring Web應用程序

我需要指定當前設置如下 我的配置JPA &休眠如下:我一直在使用部署過程中被讀取到應用程序上下文中的預先存在,mysql.jdbc.properties文件org.springframework.context.support.ReloadableResosurceBundleMessageSource bean class。 我的數據配置豆看起來像這些:

<bean id="dataSource" 
class="org.springframework.jdbc.datasource.DriverM anagerDataSource"> 
<property name="driverClassName" value="${jdbc.driverClassName}"/> 
<property name="url" value="${jdbc.url}"/> 
<property name="username" value="${jdbc.username}"/> 
<property name="password" value="${jdbc.password}"/> 
</bean> 

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerE ntityManagerFactoryBean" 
p:dataSource-ref="dataSource" 
packagesToScan-ref="jpaPackages" 
p:jpaVendorAdapter-ref="hibernateVendor" 
p:jpaPropertyMap-ref="jpaPropertyMap" /> 

<util:list id="jpaPackages"> 
<value>org.kemri.wellcome.dhisreport.api.model</value> 
<value>org.hisp.dhis.dxf2.importsummary</value> 
</util:list> 

<bean id="hibernateVendor" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" 
p:showSql="false"/> 

我想允許用戶輸入的Web瀏覽器的數據庫屬性(數據庫名稱,網址,用戶名,密碼),然後應用程序生成的Web應用程序第一次運行的數據庫表

+0

好的問題,我從來沒有見過JPA + Hibernate動態配置,我不知道這是否可能。 –

+0

我希望如此。這將大大有助於擴展某些功能 –

回答

0

您可以構建一個Configuration在運行時:

Configuration cfg = new Configuration(); 

Configuration類添加您的實體的許多方法。例如,您可以執行以下操作:

cfg.addPackage("com.foo.bar"); 

您使用Configuration.setProperty()設置了屬性。我建議你閱讀文檔:http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/session-configuration.html

有了這個配置,Hibernate可以使用SchemaExport生成DDL。首先創建一個:

SchemaExport se = SchemaExport(cfg); 

使用create然後運行該腳本:

se.create(true, true); 

編輯:一些研究,我發現這個可以在Spring中完成,因此您不必創建後再次建立會話。看到這篇文章:http://hillert.blogspot.com/2010/05/using-hibernates-schemaexport-feature.html

相關問題