我有一个带有HSQLDB的Spring Batch应用程序。我注意到数据库在我的作业的每个步骤之后都已删除并重新初始化,但我希望它在作业的所有步骤中都保持不变。
这是我的数据源配置:
<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) )
我的目标是在所有步骤中共享数据库。
如果有的话,谢谢大家。
答案 0 :(得分:0)
这种情况下的问题是我在下一步中重新初始化了应用程序上下文,因此Db被重新初始化了。
使用ApplicationContextAware接口可以解决问题。
如果您需要更多详细信息,请给我评论。