1

我希望我的 Spring 3.1 + JPA + Hibernate Web 应用程序在首次运行时有一个数据库属性设置向导。我对模型层使用 JPA 注释,所有配置都是 xml 格式,即(dispatcher-servlet.xml、application-context.xml)。我有一个预先存在的 mysql.jdbc.properties 文件,该文件在部署期间被读取到应用程序上下文中。我想允许用户在 Web 浏览器中输入数据库属性(数据库名称、url、用户名、密码),然后应用程序生成数据库表。我怎么做?

我需要指定当前设置如下 我对 JPA 和 Hibernate 的配置如下:我有一个预先存在的 mysql.jdbc.properties 文件,在部署期间使用org.springframework.context.support读取到应用程序上下文.ReloadableResosurceBundleMessageSource bean 类。我的数据配置 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 应用程序首次运行时生成数据库表

4

1 回答 1

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. 首先创建一个:

SchemaExport se = SchemaExport(cfg);

然后使用以下命令运行脚本create

se.create(true, true);

编辑:经过一些研究,我发现这可以在 Spring 中完成,因此您不必再次创建和构建会话。见这篇文章:http ://hillert.blogspot.com/2010/05/using-hibernates-schemaexport-feature.html

于 2013-05-30T10:35:47.343 回答