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

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

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

おすすめ記事

記事・ニュース一覧