Carbonado開発元Amazon.com
最新版1.3.1 / 2015年3月7日 (9年前) (2015-03-07)
リポジトリ
github.com/carbonado/carbonado
Carbonado はJavaで書かれたオープンソースの関連データベースマッピングフレームワーク。 典型的なオブジェクト関係マッピング手法に従うのではなく、依然としてオブジェクト指向である一方で、関係モデルは保存される。SQLやJDBCの特定の機能に縛られていないCarbonadoは、Berkeley DBなどの非SQLデータベース製品もサポートしている。これにより、SQLのオーバーヘッドなしで、クエリやインデックスなどの関連機能がサポートされる。 Carbonadoは元々Amazon.comが以前のフレームワークの改定として内部使用目的で開発したものである。Apacheのライセンスを受けたオープンソースプロジェクトとしてリリースされた[1]。 関連エンティティはCarbonadoでは「Storables」として知られており、インターフェイスまたは抽象クラスによって定義される。 アノテーションは、Javaインタフェースだけでは定義できない機能を指定する必要がある。 全てのStorableには、エンティティの主キーを説明するアノテーションが必要である。 @PrimaryKey("entityId") public interface MyEntity extends Storable { long getEntityId(); void setEntityId(long id); String getMessage(); void setMessage(String message); } Carbonado Storablesは純粋なPOJOではなく、常にStorableスーパークラスを拡張する必要がある。 そうすることによって、彼らはそれに組み込まれている様々な方法にアクセスすることができる。 格納可能な定義には、アクティブなレコードパターンに従ってビジネスロジックを含めることもできる。 Storableの実際の実装は、実行時にCarbonado自身によって生成される。 toString、equals、およびhashCodeの標準オブジェクトメソッドも生成される。 これにより、定型コードを記述する必要がないため、新しいエンティティを定義するプロセスが大幅に簡素化される。 Storable byキーをロードするプロセスは、ファクトリメソッドを呼び出して初期化されていないインスタンスを作成することから始まる。 キーによってStorable をロードするプロセスは、ファクトリメソッドを呼び出して初期化されていないインスタンスを作成することから始まる。 Repository repo = ... Storage<MyEntity> storage = repo.storageFor(MyEntity.class); MyEntity entity = storage.prepare(); 次に、キーのプロパティが設定され、loadが呼び出される。 entity.setEntityId(id); entity.load(); リポジトリは、基になるデータベースへのゲートウェイである。 いくつかのコア実装が利用可能。 さらに、単純なレプリケーションとロギングをサポートする複合リポジトリも存在する。 すべてのリポジトリは、ビルダー・パターンを使用して作成される。 ビルダーの各タイプは、リポジトリ・タイプに固有のオプションをサポートする。 リポジトリインスタンスが構築されると、標準インタフェースのみに準拠する。 特定の機能へのアクセスは、Capabilityインターフェイスによって提供される。 BDBRepositoryBuilder builder = new BDBRepositoryBuilder(); builder.setName(name); builder.setEnvironmentHome(envHome); builder.setTransactionWriteNoSync(true); Repository repo = builder.build(); Carbonadoクエリは、単純なフィルタ式と順序付け仕様によって定義される。 SQLと比較すると、フィルタはwhere句によく似ている。 フィルタには結合プロパティを含めることができ、サブフィルタを含めることも可能。 以下の単純なクエリ例では特定のメッセージを持つエンティティを照会する。 Storage<MyEntity> storage = repo.storageFor(MyEntity.class); Query<MyEntity> query = storage.query("message = ?").with(message); List<MyEntity> matches = query.fetch().toList(); トランザクションはリポジトリインスタンスから作成され、スレッド局所記憶スコープを定義する。 複数の永続操作が自動的にグループ化され、コミットを呼び出してトランザクションを完了する必要がある。 Transaction txn = repo.enterTransaction(); try { MyEntity entity = storage.prepare(); entity.setEntityId(1); entity.setMessage("hello"); entity.insert(); entity = storage.prepare(); entity.setEntityId(2); entity.setMessage("world"); entity.insert(); txn.commit(); } finally { txn.exit(); } この設計アプローチは、Carbonadoが関連データベースマッピングフレームワークと似ていないことを示している。 このようなフレームワークは通常、多くの場合変更を追跡するセッションを使用することによってトランザクションの概念を完全に隠すが、Carbonadoでは、全てのアクションは直接的である。 ウェブサイト
歴史
エンティティ定義
リポジトリ使用
JDBC access
Berkeley DB
Berkeley DB Java Edition
An in memory database
クエリ実行
トランザクション
参考文献^ “ ⇒Carbonado”. All Things Distributed (2006年10月26日). 2010年12月25日閲覧。
外部リンク
Carbonado Home Page
歴
Amazon
製品 ·
サービス
A9.com
AbeBooks
China
The Book Depository
BookFinder
中国
Curse
ダッシュ
Digital Photography Review
Fresh
Goodreads
IMDb
Box Office Mojo
Withoutabox
Amazon.co.jp
Junglee.com
マーケットプレイス
Pay
Twitch
Woot.com
Zappos.com
Souq.com
クラウド
Amazon Web Services
AMI
Aurora
CloudFront
DynamoDB
EBS
EC2
MTurk
Product Advertising API
RDS
S3
SimpleDB
SQS
VPC
Amazon Silk
Amazon Glacier
Amazon Storywriter
デジタル
Alexa
Appstore
Audible
コミクソロジー
Cloud Drive
Prime Video
プライム
Kindle Store
Music
Reflexive Entertainment
Amazon Digital Game Store
デバイス
Blink Home
Cloud Cam
Dash buttons
Dash wand
Echo
Show
Kindle
Fireタブレット
Fire
Fire HD
Fire HDX
Fire HD 10
Fire TV
Stick
Fire Phone
技術
1-Click
ゲームスタジオ
Amazon Robotics
Carbonado
Dynamo
Gurupa
Lab126
Double Helix Games
Obidos
リクアビスタ
出版
Amazon Publishing
Amazon Studios
Breakthrough Novel Award
Best Books of the Year