h2
アプリケーション組み込みのデータベースとしては h2 を使うケースがあります。 h2 は Java で書かれたデータベースで、JDBC でアクセスできます。
ただし、最近ではウェブアプリケーションのテストでは h2 でテストするのではなく testcontainers で Docker 上にデータベースを立てることが多いです。
他のデータベースとの比較
http://www.h2database.com/html/features.html#comparison
このへん見てください。
URI の指定の仕方を教えて下さい
以下のようにします。インメモリDBが便利です。
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 directory
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
Server start:java -cp *.jar org.h2.tools.Server
Settings
jdbc:h2:..;MODE=MySQL compatibility (or HSQLDB,...)
jdbc:h2:..;TRACE_LEVEL_FILE=3 log to *.trace.db
jdbc:h2:..;TRACE_LEVEL_SYSTEM_OUT=3 log to STDOUT
AUTO_INCREMENT 指定ってどうやるんですか?
以下のように auto_increment
を指定すればよいです。
create table foo (id bigint auto_increment primary key);
FAQ
Java DB ってどうなんですか?
Java DB は Apache Derby が実体です。JDK に組み込まれています。 しかしパフォーマンスはあまり良くないようです。
https://ja.wikipedia.org/wiki/Apache_Derby
HSQLDB ってどうなんですか?
HSQLDB の作者が後継として作ってるのが h2 なので h2 のほうが良さそう。
使い慣れた SQLite 使いたいのですが
使い慣れた SQLite を利用したいという気持ちもわかります。 JDBC Driver が存在しているので、こちら利用すれば利用可能です。
https://bitbucket.org/xerial/sqlite-jdbc/downloads
ただ、できればすべて Java で書かれている h2 のほうが良い気はします。