База данных H2 В памяти - схема инициализации через Spring / Hibernate - PullRequest
4 голосов
/ 22 декабря 2009

У меня есть приложение Spring / Hibernate с базой данных H2, и у меня есть несколько проблем с настройкой H2 для запуска во встроенном режиме (в памяти):

1. Я хочу, чтобы Spring запустил базу данных H2, поэтому я создал следующие компоненты Spring:

<bean id="org.h2.tools.Server" class="org.h2.tools.Server"
        factory-method="createTcpServer" init-method="start" destroy-method="stop">
        <constructor-arg value="-tcp,-tcpAllowOthers,true,-tcpPort,8043" />
    </bean>

    <bean id="org.h2.tools.Server-WebServer" class="org.h2.tools.Server"
        factory-method="createWebServer" init-method="start">
        <constructor-arg value="-web,-webAllowOthers,true,-webPort,8082" />
    </bean>

Нужно ли вообще использовать tcp сервер для использования в памяти? Это правильная конфигурация для памяти?

2. С вышеуказанной конфигурацией - Как я могу создать и инициализировать схему базы данных перед запуском Hibernate? Я знаю, что HSQLDB имеет свойство URL, в котором указано имя сценария создания. Есть ли здесь подобный способ?

Спасибо за помощь

1 Ответ

7 голосов
/ 22 декабря 2009

Hibernate имеет свойство под названием schemaUpdate. Установите его на SessionFactory, чтобы база данных создавалась при инициализации.

<property name="schemaUpdate" value="true" />

Если вы используете JPA, то для JpaVendorAdapter

должно быть установлено свойство generateDdl.
...