Как добавить Светильники в проект Spring Hibernate - PullRequest
3 голосов
/ 13 марта 2011

Я пытаюсь добавить данные / примеры данных в проект Spring, который использует Hibernate в качестве JPA.

Я создал файл fixtures.sql (в WEB-INF / classes / fixtures.sql), содержащий набор SQL-запросов, которые я хочу выполнить, чтобы заполнить базу данных образцами данных во время разработки. В режиме разработки я использую базу данных Hypersonic InMemory, находящуюся в памяти, при развертывании на Postgres или MySQL эти данные будут загружены.

Как загрузить эти данные при перезапуске / запуске приложения? Hypersonic стирает базу данных в памяти каждый раз, когда приложение перезапускается, а это значит, что мне нужно пройти через все шаги для создания образцов данных каждый раз, когда я хочу что-то протестировать во внешнем интерфейсе.

database.properties:

database.password=
database.url=jdbc\:hsqldb\:mem\:myproject
database.username=sa
database.driverClassName=org.hsqldb.jdbcDriver

persistence.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database -->
            <property name="hibernate.hbm2ddl.auto" value="create"/>
            <property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
            <property name="hibernate.connection.charSet" value="UTF-8"/> 
        </properties>
    </persistence-unit>
</persistence>

Ответы [ 3 ]

4 голосов
/ 13 марта 2011

Вы можете использовать <jdbc:initialize-database>, см. 12.9 Инициализация источника данных .

3 голосов
/ 13 марта 2011

Три возможных способа:

  1. Использовать import.sql (см. http://blog.eyallupu.com/2007/05/hibernates-hbm2ddl-tool.html в разделе «Создание»)

  2. Используйте DBUnit (см. http://onjava.com/pub/a/onjava/2004/01/21/dbunit.html)

  3. Напишите код для заполнения базы данных при @SetUp (или запуске приложения), используя создание доменных объектов и их сохранение.

2 голосов
/ 11 марта 2012

Если вы предпочитаете более структурированный подход и если ваш проект достаточно большой, вы должны взглянуть на https://github.com/42BV/jarb и, или http://www.liquibase.org/.. Вам также следует подумать, нужны ли вам временные свежие осветительные приборы или постоянныеприборы (см. тестовые шаблоны xUnit).Для весны этот вид настройки может использоваться с абстракцией среды и профилями компонентов (см. @Profile из 3.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...