JPA/ORM フレームワーク比較
今更ですが ORM (Object-Relational Mapping) とその Java 標準である JPA (Java Persistence API) について幾つか調べてみたまとめ。
フレームワーク | ライセンス | JPA | 備考 |
---|---|---|---|
Oracle TopLink | Oracle License | 2.0 | Oracle 製品。TopLink Essentials (TopLink のオープンソース版) は EclipseLink に置き換えられています。 |
EclipseLink |
Eclipse Public License, Eclipse Distribution License |
2.0 | JPA 以外にも JAXB や DBWS などが含まれていて多機能。TopLink をフォークして開発が進められている。 |
Hibernate | LGPL | 2.0 | iBATIS と並ぶ古くからの ORM。軽量が売りだったはずが最近ではめっきり重量級になってしまった感。 |
Apache OpenJPA | Apache License 2.0 | 2.0 | JPA のみで使う分にはシンプルで機能も一通り充足していておすすめ。 |
MyBATIS | Apache License 2.0 | × | SQL をゴリゴリ書く開発向け。 |
iBATIS | Apache License 2.0 | × | 現在開発は中止され MyBatis に移行している。 |
JPA か否か
JPA は新規開発でテーブル定義も自由に行え、パフォーマンスや将来的なメンテナンス要件より設計上の整合性を優先できる場合に向いている。Ruby on Rails の ActiveRecord なんぞを知っているならこちらの感覚が近い。
JPA を素直に使っている分には基盤の JPA フレームワークの差し替えが容易なのも魅力的。
逆に JPA は SQL をゴリゴリ書かなければならないような開発には向いていない。つまり、既存システムのテーブルを使わなければならない場合や、パフォーマンスのための非正規化が行われたり DB 固有の SQL を発行しなければならないようなケース。多くの SI 系業務システムはこちらではないかな。
Eclipse で使うには
Software Install から Java EE と Dali をインストールする。デフォルトで EclipseLink が使用されるが後での差し替えは容易なのでそのまま開発してもよい。