HSQLDBを使ってみた。
これだよ……求めていたのはこれなんだよ!!
とゆーわけで HSQLDB とゆーデータベースを使ってみました。
import java.sql.*; public class C04 { private static final String TABLE_TEST = "CREATE TABLE " + " TABLE_TEST " + "( " + " NAME VARCHAR " + ", VALUE int " + ") " ; private static final String[] INSERT = new String[] { "INSERT INTO " + " TABLE_TEST " + "VALUES " + "( " + " 'ネームA' " + ", 100 " + ") " , "INSERT INTO " + " TABLE_TEST " + "VALUES " + "( " + " 'ネームB' " + ", 200 " + ") " , "INSERT INTO " + " TABLE_TEST " + "VALUES " + "( " + " 'ネームC' " + ", 300 " + ") " }; private static final String SELECT = "SELECT " + " * " + "FROM " + " TABLE_TEST " ; static void Do() { try { // HSQLDB を使ってみます。 // hsqldb.jar にクラスパス通してください。逆に言うとそれだけでOK // その他のセットアップは必要なし!! Class.forName( "org.hsqldb.jdbcDriver" ); Connection con = DriverManager.getConnection( "jdbc:hsqldb:mem:aname", "sa", "" ); // テーブル作って、 PreparedStatement ps = null; ps = con.prepareStatement( TABLE_TEST ); ps.execute(); ps.close(); // INSERT して、 for( int iF1 = 0; iF1 < INSERT.length; ++iF1 ) { ps = con.prepareStatement( INSERT[iF1] ); ps.execute(); ps.close(); } // んでデータを取ってくる。 Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery( SELECT ); while( rs.next() ) { String name = rs.getString( "NAME" ); int value = rs.getInt( "VALUE" ); System.out.println( name + ", " + value ); } // ネームA, 100 // ネームB, 200 // ネームC, 300 stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } }
一見、ただのデータベース。これのどこがいいのか。
完全にオンメモリなのがいい!
つまり、インストールの必要がない、設定の必要がない、ユーザー登録も必要ない、ファイルにも残さない、 jar にパス通すだけで JDBC 叩けば使える、この手軽さ!!
これ、 JavaA2Z のデータベース解説に使います(爆)。たとえば MySQL でも postgreSQL でも、 SQL の解説前に「インストールしてね」ってのはかなり敷居高いと思うんで、でも「ファイル落としてクラスパス通せばあとはサンプルコード試せます」ってのは大きいんで。これまで SQL まわりは避けてたんだけど、これでいい感じに行けそうだな。
あともうひとつ、 JUnit のユニットテストに使えそう。今は本番データベースにテスト用のユーザー作ってそっちで試してるけど、できれば完全なテスト環境だけで試したかったんで。まぁこっちの方はいざ本番で試したら動かないとかありそうだから微妙な所もあるけど……。
ま、こんな感じで JavaA2Z でもデータベースまわりの単語を追加していきます。あとはサーブレットだなぁ、一番簡単にインストールできて試せる環境ってなんだろう、やっぱ Tomcat かなぁ……。