Carbonado (Java)

Carbonado: Java製オープンソースORMフレームワーク



Carbonadoは、Javaで開発されたオープンソースの関連データベースマッピングフレームワークです。従来のオブジェクト関係マッピング(ORM)とは異なり、オブジェクト指向の原則を維持しながらも、関係モデルを尊重する設計が特徴です。SQLやJDBCの特定機能に依存しないため、Berkeley DBなどの非SQLデータベース製品もサポートしています。これにより、SQLのオーバーヘッドを排除しつつ、クエリやインデックスといった関連機能が利用できます。

歴史



Carbonadoは、Amazon.comが内部利用のために開発したフレームワークを改修したものが起源です。その後、Apacheライセンスの下でオープンソースプロジェクトとして公開されました。

エンティティ定義



Carbonadoでは、関連エンティティは「Storables」として定義されます。これはインターフェースまたは抽象クラスによって宣言されます。アノテーションを利用することで、Javaインターフェースだけでは表現できない機能を指定可能です。全てのStorableには、エンティティの主キーを記述するアノテーションが必須となります。

Storableは、POJO(Plain Old Java Object)とは異なり、常にStorableスーパークラスを拡張する必要があります。これにより、組み込みの様々なメソッドにアクセスできます。Storableの定義には、アクティブレコードパターンに従ったビジネスロジックを含めることも可能です。

Storableの実装は、実行時にCarbonado自身によって生成されます。toString、equals、hashCodeといった標準的なオブジェクトメソッドも自動的に生成されるため、開発者は定型的なコードを書く必要がなくなり、新しいエンティティの定義プロセスが大幅に簡素化されます。キーによるStorableのロードは、まずファクトリメソッドを呼び出して未初期化のインスタンスを作成することから始まります。次に、キーのプロパティを設定し、loadメソッドを呼び出すことで完了します。

リポジトリの利用



リポジトリは、基盤となるデータベースへのアクセスを制御するゲートウェイです。Carbonadoには、以下のコア実装が用意されています。

JDBCアクセス
Berkeley DB
Berkeley DB Java Edition
インメモリデータベース

さらに、単純なレプリケーションやロギングをサポートする複合リポジトリも利用できます。全てのリポジトリは、ビルダーパターンを用いて構築され、各ビルダータイプは特定のリポジトリタイプに特化したオプションを提供します。リポジトリインスタンスが構築された後は、標準インターフェースのみに準拠します。特定の機能へのアクセスは、Capabilityインターフェースを通じて提供されます。

クエリ実行



Carbonadoのクエリは、単純なフィルタ式と順序付け仕様によって定義されます。SQLのWHERE句に相当するフィルタには、結合プロパティやサブフィルタを含めることが可能です。例として、特定メッセージを持つエンティティを照会するクエリを以下に示します。

java
// 例:特定のメッセージを持つエンティティを検索する
Query query = repo.query(MyEntity.class)
.where(MyEntity.MESSAGE.eq("特定メッセージ"));


トランザクション



トランザクションは、リポジトリインスタンスから作成され、スレッドローカルストレージのスコープを定義します。複数の永続化操作は自動的にグループ化され、commitメソッドを呼び出すことでトランザクションが完了します。

この設計アプローチは、従来の関連データベースマッピングフレームワークとは異なるCarbonadoの特徴を示しています。一般的に、これらのフレームワークはセッションを使用して変更を追跡し、トランザクションの概念を抽象化することが多いですが、Carbonadoでは全てのアクションが直接的です。

参考文献



Carbonado Home Page

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。