Java DB 起動〜Derbyの起動〜

イントロダクション

JavaDB、Derbyの起動について記載します。DerbyはJDK=Javaをインストールしたら一緒についてきます。JDKつまり下のキャプチャになります。

Java(JDK)のインストール先から「db」と言うフォルダがあればインストール済みと言うことです。

Java DB

Java DBはその名の通り、Java製のデータベースです。MySQL(MongoDB), PostgreSQL, GraphDBなどたくさんのDBサーバー・アプリがありますが。
このJavaDBは、埋め込み式とMySQLのようなサーバー式(筆者が勝手によんでいる呼称)の二つで起動することができます。

つまり、埋め込んでもよいし、サーバーとして起動してもよい。ということです。

埋め込み式とは

俗に言うエンベデット(embedded)という形で実行するということなのですが、実装してみた感触では、サーバーの時と変わらないです。
実行する環境として、サーバー(別プロセスで実行する)のか、同じプロセスで実行するのか?ぐらいの違いです。

主に、ARMなどの小さい基盤(マザーボード)を使用して動くPC、例えばスマホ、のアプリケーションで使用することが多いです。
サーバータイプのDBでは、スマホなどの外、つまりは、インターネット経由での通信を行ってデータのやり取りをします。

まとめると、エンベデットは軽いのです。

サーバー式とは※一般的でない言い方です。

サーバー式と呼んでおりますが、一般的ではない呼び方です。つまりはDBサーバーのことを指して読んでおります。
「埋め込み」に対して「サーバー」ということでこのように呼んだ次第です。筆者が勝手につけた呼び名ですのでご注意ください。

MySQLやPostgreなどのデータベース、もちろんOracleもサーバーとして動かすものの情報が、主流になっているようです。
「情報」といったのは、ネットの記事などでは、埋め込みのものより、サーバーの方が目に付くので「情報が主流」というような記述をしました。

つまり、ウェブブラウザでアクセスしてSQLを発行、データのCRUDを行う。もしくは、プログラムからリクエスト(SQLを含む)を受け取ってそれに対してCRUDを行うのがサーバー式。

埋め込み式は、後者のみ。という単純な分け方です。深く考えない方が良いと思います。

つまり

  • サーバー式は、ブラウザとプログラムの両方で扱うことができる。
  • 埋め込み式は、プログラムで扱うことができる。
    ということです。

大切なのは、使用する環境はどちらのタイプが適当か?というのと判断することです。

起動するためにどうやるのか?

起動するのには大まかに2つのタイプがあります

  1. サーバータイプ:「ij」コマンドでDerbyを起動して、それにアクセス
  2. Embedタイプ:システムプロパティに起動する場所を設定して起動する

今回は2の「Embed」タイプの起動を行います。

  1. Derbyを起動する場所を指定する
  2. エンコード指定をする

<実際のコード>

String url = "jdbc:derby:/Users/takk/eclipse-workspace/AutoBlogPoster/db;create=true";
try {
        // システムのホーム=>Derbyを起動する場所
    System.setProperty("derby.system.home", "/Users/takk/eclipse-workspace/AutoBlogPoster/");
        // エンコードの指定
    System.setProperty("derby.ui.codeset", "UTF8");
        // 指定した場所で起動するDBのコネクションを取得する
    con = DriverManager.getConnection(url);
        // オートコミットする設定
    con.setAutoCommit(true);
        // SQLを実行するためのオブジェクト
    stm = con.createStatement();
        // SQL文
    String isTable = "select * from BUNSETSU_MST";
        // SQLの実行と実行結果取得
    ResultSet rs = stm.executeQuery(isTable);
    while(rs.next()) {
        String st = rs.getString(1);
        System.out.println(st);
    }
} catch(SQLException e) {
    e.printStackTrace();
} finally {
    try {
                // SQLを実行するオブジェクトを閉じる
        stm.close();
                // コネクションを閉じる
        con.close();
                // オブジェクトの解放(メモリ解放)
        stm = null;
                // 同上
        con = null;
    } catch(SQLException e) {
        e.printStackTrace();
    }

}


[rakuten ids="kashou-hanamizuki:10000020"]

[rakuten ids="a-price:10460378"]

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す