濃縮還元オレンジニュース

ActiveRecordに触発されて作られた軽量Java O/Rマッパ「ActiveObjects」

この記事を読むのに必要な時間:およそ 1 分

Ruby on RailsのデータアクセスフレームワークであるActiveRecordに触発されて作られたJavaフレームワーク「ActiveObjects」が,Daniel Spiewak氏によって開発されています。今までのJava O/Rマッピングフレームワークは,多数のライブラリに依存していたり,XMLなどの設定ファイルを用意しなければならないなどの手間がありましたが,ActiveObjectsは1つのJARファイルで設定ファイルなしに実現しています。たとえばPersonというエンティティを作成するコードはリスト1~2のようになります。

エンティティを表すインタフェースとEntityManagerを操作する少しのコードで簡単にデータアクセスが実現できます。また,データベースを用意しておけばテーブルの作成・削除などの変更管理(migration)まで行ってくれます。さらに,Ruby on Rails(のActiveSupport)に備わっているテーブル名を複数形にする機能(Personエンティティを表すテーブルがPeopleになる)もあります。ほかにもアノテーションを利用したOne-To-Many,Many-To-ManyのリレーションやLuceneを使った全文検索サポートなども備わっています。

2007年9月現在バージョン0.5.1でまだまだ成長の過程にあるため,業務での利用は避けたほうがよいですが,非常に注目すべきJavaフレームワークの一つです。

リスト1 Person.java

import net.java.ao.Entity;

public interface Person extends Entity {
    public String getFirstName();
    public void setFirstName(String firstName);

    public String getLastName();
    public void setLastName(String lastName);
}

リスト2 Main.java

import java.util.logging.Level;
import java.util.logging.Logger;
import net.java.ao.EntityManager;

public class Main {
    public static void main(String[] args) throws Exception {
        // データベースの接続情報を元にEntityManagerを作成
        EntityManager manager = new EntityManager(
                "jdbc:mysql://localhost/test", "root", "");
        Logger.getLogger("net.java.ao").setLevel(Level.FINE);
        // personテーブルを作成
        manager.migrate(Person.class);
        Person person = manager.create(Person.class);
        person.setFirstName("Jane");
        person.setLastName("Doe");
        person.save();
    }
}

URLhttps://activeobjects.dev.java.net

著者プロフィール

角田直行(かくだなおゆき)

普段はお仕事でPHPやJavaを使ってWeb開発をしています。一部でセレブエンジニアとか言われてますが,全然セレブじゃありません。

コメント

コメントの記入