2011-11-17 24 views
16

Uso Oracle en el entorno de producción y me gustaría usar H2 para probar. Puedo teclear;Prueba de Resorte con configuración H2 db

<jdbc:embedded-database id="dataSource"> 
    <jdbc:script location="classpath:schema.sql"/> 
    <jdbc:script location="classpath:test-data.sql"/> 
</jdbc:embedded-database> 

para que mis tablas y scripts se creen automáticamente. Pero no puedo establecer el valor de URL de este db. (Para compatibilidad con H2-Oracle, debería agregar: MODE = Oracle a la parte url)

¿Hay alguna forma de lograr este objetivo?

O simplemente una solución opuesta;

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.h2.Driver"/> 
    <property name="url" value="jdbc:h2:file:h2\db"/> 
    <property name="username" value="sa"/> 
    <property name="password" value=""/>   
</bean> 

en este momento, puede editar la parte URL, pero ¿Cómo puedo cargar scripts de prueba por defecto (crear y sqls de datos) a esta fuente de datos?

Respuesta

22

Esta técnica resolvió el problema;

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="${jdbc.driverClassName}" /> 
     <property name="url" value="${jdbc.url}" /> 
     <property name="username" value="${jdbc.username}" /> 
     <property name="password" value="${jdbc.password}" /> 
</bean> 

y agregue esta etiqueta y su definición;

<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS"> 
    <jdbc:script location="classpath:testdb/schema.sql" /> 
    <jdbc:script location="classpath:testdb/data.sql" /> 
</jdbc:initialize-database> 
+0

¿Cuál es el contenido de esos archivos? schema.sql y data.sql, ¿contienen algo que tienes que configurar? – wlk

+0

hola Wojtek, sí, necesito algunos datos de prueba inicial. Varios contenidos son direcciones IP de muchos servidores, algunos roles de usuario, nombres de ciudades, etc. – asyard

13

Quizás esto ayude: H2 es compatible con INIT script (un script SQL que se ejecuta al abrir la conexión). La base de datos de URL se vería así en el archivo XML:

<property name="url" value="jdbc:h2:file:h2\db;INIT= 
RUNSCRIPT FROM 'classpath:schema.sql'\; 
RUNSCRIPT FROM 'classpath:test-data.sql'"/> 

(; las necesidades que se escapó con una barra invertida).

+0

gracias por su respuesta, mi mejor opción fue utilizar el enfoque brindado por Spring (jdbc: initialize-database .. etc) sin extender la url con valores. Esta técnica también es útil. Gracias. – asyard

Cuestiones relacionadas