At the moment we use HSQLDB as an embedded database, but we search for a database with less memory footprint as the data volume grows.
Derby / JavaDB is not an option at the moment because it stores properties globally in the system properties. So we thought of h2.
While we used HSQLDB we created a Server-object, set the parameters and started it. This is described here (and given as example in the class org.hsqldb.test.TestBase).
The question is: Can this be done analogous with the h2 database, too? Do you have any code samples for that? Scanning the h2-page, I did not find an example.
In server mode, you need to use one of the following JDBC URLs: jdbc:h2:tcp://localhost/~/test connect to the 'test' database in the user home directory on the server (local computer). jdbc:h2:tcp://192.168.1.3:9092 //data/test connect to the 'test' database in the /data directory on the remote server.
Yes, you can run H2 in embedded mode. You just use the JDBC driver and connect to an embedded url like this (their example):
This database can be used in embedded mode, or in server mode. To use it in embedded mode, you need to:
* 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
Example of connecting with JDBC to an embedded H2 database (adapted from 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();
If you're looking to use H2 in a purely in-memory / embedded mode, you can do that too. See this link for more:
You just need to use a special URL in normal JDBC code like "jdbc:h2:mem:db1".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With