/ / Контекст на пролетен Bootstrap за изпускане на таблици, ако те съществуват - java, spring, hibernate, jpa, spring-jdbc

Spring Bootstrap Контекст за отпадане Таблици трябва да съществуват - java, spring, hibernate, jpa, spring-jdbc

Опитвам се да създам първоначално зареждане на приложение, което ще изпусне всички таблици в приложението, ако те съществуват и след това ги интифицират с нови данни.

Създадох Пролетен контекст, който зареждаконтекст на източника на данни - обаче аз не знам как да замествам инициализацията на източника на данни, така че поведението да може да бъде персонализирано в зависимост от това как се зарежда източникът на данни. Така че .. използване на хибернация като ми JPA изпълнение ..

Ако източникът на данни е зареден от приложението - тогава бих искал схемите да се актуализират:

    <persistence-unit name="myDB" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>

Ако източникът на данни е зареден от bootstrap - тогава трябва да претоварвам това поведение по някакъв начин, така че базата данни винаги да се създава от нулата, преди да бъдат заредени нови данни:

    <persistence-unit name="myDB" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.hbm2ddl.auto" value="create"/>
</properties>
</persistence-unit>

Подходът, който вземах, не работи както азще зареди източника на данни с помощта на настройката "update" и след това ще премахне таблиците, ако те съществуват, преди да се опитат да заредят нови данни. Въпреки това - таблиците вече не съществуват за писане на данни!

Благодаря предварително

Simon

Отговори:

0 за отговор № 1

Можете да прехвърлите свойствата на JPA от конфигурацията на Spring вместо на persistance.xml и използвайте контейнер, който може да бъде конфигуриран от PlaceholderConfigurer (вероятно system-properties = "OVERRIDE") или пролетни профили (от 3.1) или като използвате Maven филтриране:

<util:map id="jpaPropertyMap" key-type="java.lang.String" value-type="java.lang.Object">
<entry key="hibernate.hbm2ddl.auto" value="${database.ddl.mode}" />
</util:map>

<bean id="managementEntityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"
p:jpaPropertyMap-ref="jpaPropertyMap" />