2013-05-30 3 views
1

Я хочу, чтобы мое Spring 3.1 + JPA + Hibernate веб-приложение имело мастер настройки свойств базы данных при первом запуске. Я использую аннотации JPA для моего уровня модели, и все конфигурации находятся в формате xml i.e (dispatcher-servlet.xml, application-context.xml). У меня есть уже существующие файлы mysql.jdbc.properties, которые читаются в контексте приложения во время развертывания. Я хочу разрешить пользователю вводить свойства базы данных в веб-браузере (имя базы данных, url, имя пользователя, пароль), после чего приложение генерирует таблицы базы данных. Как мне это сделать?Spring Web-приложение с мастером настройки для конфигурации базы данных

мне нужно указать, что текущая настройка выглядит следующим образом Моей конфигурации для JPA & 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"/> 

Я хочу, чтобы позволить пользователю вводить свойства базы данных в веб-браузере (имя базы данных, URL, имя пользователя, пароль), то приложение генерирует таблицы базы данных на веб-приложения первого запуска

+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 может генерировать DDL, используя SchemaExport. Сначала нужно создать один:

SchemaExport se = SchemaExport(cfg); 

Затем запустите скрипт с помощью create:

se.create(true, true); 

EDIT: После некоторых исследований я нашел это может быть сделано в течение весны, так что вам не нужно создавать и снова создайте сеанс. См. Эту статью: http://hillert.blogspot.com/2010/05/using-hibernates-schemaexport-feature.html

Смежные вопросы