Поделиться HSQLDB на всех этапах Spring Batch - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть приложение Spring Batch с HSQLDB.Я замечаю, что база данных была сброшена и переинициализирована после каждого шага в моей работе, но я хочу, чтобы она сохранялась на всех этапах работы.

Здесь моя конфигурация источника данных:

<jdbc:initialize-database data-source="dataSource">
    <jdbc:script location="classpath:rubrica.sql" />
    <jdbc:script location="org/springframework/batch/core/schema-drop-hsqldb.sql" />
    <jdbc:script location="org/springframework/batch/core/schema-hsqldb.sql" />
</jdbc:initialize-database>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
    <property name="driverClassName" value="org.hsqldb.jdbc.JDBCDriver" />
    <property name="url" value="jdbc:hsqldb:file:C:\Users\U390902\Documents\workspace-sts-3.8.4.RELEASE\ixpg0-statsloader\src\main\resources\input\TestDataBase;user=sa;password=sa" />
</bean>

В основном у меня естьэта логическая структура шагов

<job>
<step 1> Read a flat file and write it in the HSQL DB </step 1>
<step 2> Read a CSV file and join it with the HSQL DB</step 1>
</job>

Но, анализируя журналы, я вижу, что БД перезапускается с использованием предоставленных сценариев sql.Это журнал:

INSERT INTO EMPLOYEE VALUES('123456','PIPPO','PLUTO')
COMMIT
/*C4*/SET SCHEMA PUBLIC
DISCONNECT
/*C5*/SET SCHEMA PUBLIC
DROP TABLE EMPLOYEE IF EXISTS
CREATE TABLE EMPLOYEE ( ID VARCHAR(6), FIRSTNAME VARCHAR(100), LASTNAME VARCHAR(100) ) 

Моя цель - разделить базу данных на всех этапах.

Спасибо всем, если они появятся, напишите мне комментарий.

1 Ответ

0 голосов
/ 26 ноября 2018

Проблема в этом случае заключается в том, что я перезагружаю контекст приложения на следующем шаге, чтобы повторно инициализировать базу данных.

Использование интерфейса ApplicationContextAware решает проблему.

Если вам нужны дополнительные сведениянапишите мне комментарий.

...