濃縮還元オレンジニュース
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();
}
}
濃縮還元オレンジニュース
- コードを書き直さずに理解できる開発者というのはごくわずかしかいない
- オープンソースのコードを読もう
- Yahoo! Design Innovation Team
- Paul Graham氏のエッセイ翻訳「死なないために」
- 任天堂の岩田社長が遊びに来たので,みんなでご飯を食べながら話を聞いたのだ。
- PHP 5でマルチタスク動作のアプリケーションを開発する
- 大規模サイト構築のノウハウに関するポータルサイト「High Scalability」
- ActiveRecordに触発されて作られた軽量Java O/Rマッパ「ActiveObjects」
- 携帯電話スペック一覧
- InfoQの日本語版「InfoQ Japan」

