H2 Database Engine Cheat Sheet

Using H2

Database URLs

Embedded
jdbc:h2:~/test 'test' in the user home directory
jdbc:h2:/data/test 'test' in the directory /data/
jdbc:h2:test in the current(!) working dir

In-Memory
jdbc:h2:mem:test multiple connections in one process
jdbc:h2:mem: unnamed private; one connection

Server Mode
jdbc:h2:tcp://localhost/~/test user home dir
jdbc:h2:tcp://localhost//data/test absolute dir

Settings
jdbc:h2:..;MODE=MySQL compatibility (or HSQLDB,...)
jdbc:h2:..;TRACE_LEVEL_FILE=3 log to *.trace.db

Documentation

Reference: SQL grammar, functions, data types, tools.
Features: fulltext search, database encryption, read-only databases (in a zip or jar file), CSV files,

Using the JDBC API

Class.forName("org.h2.Driver");
Connection conn = DriverManager.
    getConnection("jdbc:h2:~/test");
conn.close();

Connection Pool

import org.h2.jdbcx.JdbcConnectionPool;
DataSource cp = JdbcConnectionPool.
    create("jdbc:h2:~/test");
Connection conn = cp.getConnection();
conn.close(); cp.dispose();

Start a Server

java -cp h2*.jar org.h2.tools.Server

Maven

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>${version}</version>
</dependency>

Hibernate

hibernate.cfg.xml (or use the HSQLDialect):
<property name="dialect">
    org.hibernate.dialect.H2Dialect
</property>

TopLink and Glassfish

datasource classname: org.h2.jdbcx.JdbcDataSource
oracle.toplink.essentials.platform.database.H2Platform