BT

Polyforms - DAOコードの複製を削減する

| 作者: R.J. Lorimer フォローする 0 人のフォロワー , 翻訳者 渡辺 裕之 フォローする 0 人のフォロワー 投稿日 2008年10月31日. 推定読書時間: 2 分 |

Polyformsプロジェクトの最終目標はデータ・アクセス・オブジェクトをその背後にある永続化層のAPIと密に結合させてしまっている多くの複製コードを削減することである。このフレームワークでは開発者が定義したRepository (リポジトリ)インタフェースのサービス・メソッドを自動的に実装するアプローチをとっている。インタフェースに定義されたメソッドは、既定では、命名規約によってデータベース操作と関連付けられている。例えば、Wiki(リンク)ではUserエンティティに対するリポジトリをどのように実装すればいいのか議論されている 。まず、リポジトリのAPIを定義しなければならない。

public interface UserRepository extends EntityRepository<User, String> {
       
    @Finder
    List<User> findByCreator(User creator);
}

 

@FinderアノテーションはPolyformsのためにマーキングである。UserRepositoryの実装をする代わりに、Userエンティティに対する別のアノテーションによってHibernateのクエリを用意しておく必要がある。

@NamedQueries({
    @NamedQuery(name = "User.findByCreator", query = "select u from User u where u.creator = :creator"),
})
public class User {
   
...
}

ドキュメントにあるように、クエリを探すための命名規約はメソッド名と同様にエンティティ名そのものにもに基づいている。
 

メソッドと名前付きクエリをマッピングするルールは[名前付きクエリの名前] = [エンティティ名].[メソッド名]です。名前付きクエリの名前は@Finderを@Finder("findUserByName")のように使うことで指定できます。この場合、名前付きクエリの名前は"User.findByName"になります。

@Finderアノテーションに加えて、@Updaterと@Counterというアノテーションもそれぞれ一括更新やカウント・クエリをサポートするために用意されている。

EntityRepositoryという親インタフェースで既に単一のエンティティに対する保存、削除そしてID検索はサポートされている。
 

このような処理は全てSpringフレームワーク(リンク)によって行われ、これらのAPIに対する実行時の実装を提供するためにSpringのアスペクトに依存している。


Polyformsではこの他に以下のような機能がサポートされる。

  • 追跡用の情報(作成者, 作成日, 更新者, 更新日)が自動管理される
  • ページ遷移の透過的なサポート
  • アノテーションによるトランザクション境界の定義
  • 永続化イベントをアプリケーションの機能から分離するためのドメイン・イベント・モデル
     

より詳細な情報はPolyforms wiki(リンク)より入手可能できる。

 

原文はこちらです:http://www.infoq.com/news/2008/10/polyforms

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT