我希望我的Spring 3.1 + JPA + Hibernate Web应用程序在首次运行时拥有数据库属性的设置向导。我为我的模型层使用JPA注释,所有配置都是xml格式,即(dispatcher-servlet.xml,application-context.xml)。我有一个预先存在的mysql.jdbc.properties文件,在部署期间读取到应用程序上下文。我想允许用户在Web浏览器中输入数据库属性(数据库名称,URL,用户名,密码),然后应用程序生成数据库表。我该怎么做?
我需要指定当前设置如下 我对JPA& amp;的配置Hibernate如下:我有一个预先存在的mysql.jdbc.properties文件,在部署期间使用 org.springframework.context.support.ReloadableResosurceBundleMessageSource 读取到应用程序上下文豆类。 我的数据配置bean看起来像这样:
<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浏览器中输入数据库属性(数据库名称,URL,用户名,密码),然后应用程序首次在Web应用程序上生成数据库表
答案 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