Incrustar la base de datos Java h2 programáticamente

Por el momento, utilizamos HSQLDB como una base de datos integrada, pero buscamos una base de datos con menos huella de memoria a medida que crece el volumen de datos.

Derby / JavaDB no es una opción en este momento porque almacena propiedades globalmente en las propiedades del sistema. Entonces pensamos en h2 .

Mientras usábamos HSQLDB, creamos un Servidor-objeto, establecimos los parámetros y lo iniciamos. Esto se describe aquí (y se da como ejemplo en la clase org.hsqldb.test.TestBase).

La pregunta es: ¿se puede hacer esto análogamente con la base de datos h2 también? ¿Tienes algún ejemplo de código para eso? Al escanear la página h2, no encontré un ejemplo.

De la descarga, veo que el archivo tutorial.html tiene esto

import org.h2.tools.Server; ... // start the TCP Server Server server = Server.createTcpServer(args).start(); ... // stop the TCP Server server.stop(); 

Sí, puedes ejecutar H2 en modo incrustado. Simplemente use el controlador JDBC y conéctese a una URL incrustada como esta (su ejemplo):

Esta base de datos se puede usar en modo incrustado o en modo de servidor. Para usarlo en modo incrustado, debes:

 * Add h2.jar to the classpath * Use the JDBC driver class: org.h2.Driver * The database URL jdbc:h2:~/test opens the database 'test' in your user home directory 

Ejemplo de conexión con JDBC a una base de datos H2 incrustada (adaptada de http://www.h2database.com/javadoc/org/h2/jdbcx/JdbcDataSource.html ):

 import org.h2.jdbcx.JdbcDataSource; // ... JdbcDataSource ds = new JdbcDataSource(); ds.setURL("jdbc:h2:˜/test"); ds.setUser("sa"); ds.setPassword("sa"); Connection conn = ds.getConnection(); 

Si está buscando usar H2 en un modo puramente en memoria / incrustado, puede hacerlo también. Vea este enlace para más información:

Solo necesita usar una URL especial en el código JDBC normal como “jdbc: h2: mem: db1”.

Si por alguna razón necesita una base de datos H2 incorporada en modo servidor, puede hacerlo manualmente utilizando la API en http://www.h2database.com/javadoc/org/h2/tools/Server.html o agregando; AUTO_SERVER = TRUE a la URL de la base de datos.