db4oを使ってみる 〜チョイアプリをJavaで作りたい欲求
Hibernateの40倍早いそうで、面倒なマッピングなど一切いらない。
とおもって試す。
日本語化されたドキュメントが非常にありがたい!!
インストール
とりあえずダウンロード、
公式サイト(http://www.db4o.com/)から
をダウンロードした。
Zipをあけると、libディレクトリがあって
その中の「db4o-7.2.44.10827-java5.jar」を使う。
僕は以下の場所で全ての作業をやることにする。
そういうわけでそのディレクトリに、
db4o-7.2.44.10827-java5.jar
を配置した。
Register.java
package kronos; import com.db4o.*; import com.db4o.query.*; public class Register{ public static void main(String args[]){ Person p =new Person("yamamoto",31); Person p2 =new Person("yoneda",27); ObjectContainer db=Db4o.openFile("db.db4o"); try { db.set(p); System.out.println("Stored "+ p.toString()); db.set(p2); System.out.println("Stored "+ p2.toString()); } finally { db.close(); } } } class Person{ private String name; private int age; public Person(String paName ,int paAge){ this.name = paName; this.age = paAge; } public String getName(){ return this.name; } public void setName(String paName){ this.name = paName; } public int getAge(){ return this.age; } public void setAge(int paAge){ this.age = paAge; } }
上記、Registerクラスでは「db.db4o」という名前の
データベースファイルを作成して、DBとして利用するという記述となっている。
(↓の部分だ)
Db4o.openFile("db.db4o");
永続化の手順も簡単。
db.set(オブジェクト)
だけで永続化完了だ。
検索してみる
次に以下、検索のためのサンプル。
Personオブジェクトの、ageが31のものだけを引っ張ってくるようになってる。
Finder.java
package kronos; import com.db4o.*; import com.db4o.query.*; public class Finder{ public static void main(String args[]){ ObjectContainer db=Db4o.openFile("db.db4o"); try { Person q = new Person(null,31); ObjectSet result = db.get(q); listResult(result); } finally { db.close(); } } public static void listResult(ObjectSet result) { System.out.println(result.size()); while(result.hasNext()) { Person p = (Person)result.next(); System.out.print("name=" + p.getName() + ";"); System.out.print("age=" + p.getAge() + ";"); System.out.print("toString=" + p.toString() + ";"); System.out.println(); } } }
実行
では登録側(Register.java)から、コンパイルしよう
C:\java\db4o>javac -d . -cp .;.\db4o-7.2.44.10827-java5.jar *.java
注:一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。
注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてくださ
い。C:\java\db4o>java -cp .;db4o-7.2.44.10827-java5.jar kronos.Register
Stored kronos.Person@12d7a10
Stored kronos.Person@1cdeff
推奨されない API を使ってるけど、まあほっといてください。
とりあえず永続化できたようだ。
DBのファイル「db.db4o」も勝手にできて、容量が増えてる。
じゃあ次検索。
C:\java\db4o>javac -d . -cp .;.\db4o-7.2.44.10827-java5.jar *.java
注:一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。
注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてくださ
い。C:\java\db4o>java -cp .;db4o-7.2.44.10827-java5.jar kronos.Finder
1
name=yamamoto;age=31;toString=kronos.Person@17471e0;
31歳のyamamotoだけがとれました!!
らくちんだ!
もっと遊ぼう。