example java spring h2

java - example - spring boot jdbc h2



Fuente de datos H2 incorporada de Spring y DB_CLOSE_ON_EXIT (2)

Especifique el parámetro en JDBC url jdbc:h2:~/test;DB_CLOSE_ON_EXIT=FALSE

También para la base de datos de prueba en memoria, te sugiero que agregues DB_CLOSE_DELAY=-1 , como esto:

jdbc:h2:mem:alm;MODE=Oracle;DB_CLOSE_DELAY=-1

Para agregar la url de conexión JDBC a la base de datos embedded-dababase a:

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"> <property name="driverClass" value="org.h2.Driver"/> <property name="url" value="jdbc:h2:mem:test;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"/> <property name="username" value="sa"/> <property name="password" value=""/> </bean> <jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS"> <jdbc:script location="classpath:schema_h2.sql" /> </jdbc:initialize-database>

Para las pruebas unitarias (llámenlas pruebas de integración, si lo desea), he configurado una base de datos integrada en mi configuración de Spring, así:

<jdbc:embedded-database id="dataSource" type="H2"> <jdbc:script location="classpath:schema_h2.sql" /> </jdbc:embedded-database>

Ahora, cuando se ejecutan las pruebas desde la línea de comandos, funcionan bien, pero al final recibo algunos errores (inofensivos, pero irritantes):

WARN 2013-03-25 12:20:22,656 [Thread-9] o.s.j.d.e.H2EmbeddedDatabaseConfigurer ''Could not shutdown embedded database'' org.h2.jdbc.JdbcSQLException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-170] at org.h2.message.DbException.getJdbcSQLException(DbException.java:329) ~[h2-1.3.170.jar:1.3.170] ... at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean.destroy(EmbeddedDatabaseFactoryBean.java:65) [spring-jdbc-3.2.1.RELEASE.jar:3.2.1.RELEASE] at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:238) [spring-beans-3.2.1.RELEASE.jar:3.2.1.RELEASE]

Ahora la sugerencia contenida en la excepción está bien en general, pero ¿cómo agrego este atributo a la fuente de datos incrustada? ¿Tengo que expandirlo, configurarlo a mano, por así decirlo, para agregar esas características ''avanzadas'' ?


Tuve el mismo problema que Michael Piefel e intenté implementar la solución que explicó Michail Nikolaev. pero no trabajé, de alguna manera spring-batch, entonces, ¿dónde están los metadatos JOB_ * son las tablas? Entonces, como la versión de spring-jdbc utilizada por mi aplicación es 3.0.5 y al aumentar el spring-framework uno entra en conflicto con dwr (lo uso en mi aplicación) es una localización geo basada en spring, dwr y gmaps api . Descargué la versión spring-jdbc 4.0.3 y H2EmbeddedDatabaseConfigurer.class de ella el H2EmbeddedDatabaseConfigurer.class que tiene DB_CLOSE_ON_EXIT=FALSE de forma predeterminada y lo reemplacé con el de spring-jdbc 3.0.5 Relase y despliegue en el archivo war funciona, el cierre de la VM no provocó el cierre de la base de datos en memoria.

Espero que esta solución inusual ayude si otras personas como yo no pudieran implementar la otra solución.