BT

InfoQ ホームページ ニュース ORMと永続性非依存

ORMと永続性非依存

ブックマーク

原文(投稿日:2013/08/29)へのリンク

Julie Lerman氏は先日,Entity Frameworkでprivateなコンストラクタとprivateなプロパティセッタを持つクラスの操作が可能なことを指摘した。

氏の公開したテストを見れば,Entity Framework(EF)ではprivateなセッタへのデータの設定や,privateコンストラクタの呼び出しが,さほど難しくないということが分かる。さらにEFがEntityProxyFactoryとその関連クラスを参照してこれを行っていることや,リフレクションとIL Emitの組み合わせが要点であることなども理解できるはずだ。NHibernateはさらに一歩進んで,privateなフィールドへのアクセスまでもサポートしている (EFでもすでに検討されている)。ただしどちらも,現時点ではデフォルトコンストラクタ(publicでなくてもよい)が必要だ。

一般的な方向性として,これは悪いことではない。氏も述べているように,永続性非依存(persistence ignorance)促進するものだからだ。

アーキテクチャ面では,Entiry FrameworkとNHibernateはどちらも永続性非依存を支援するパターンをサポートする –

それぞれに対して,Entity FrameworkにはDBSetDBContextがあり,NHibernateにはQueryOverAPIとSessionContextがある。ただしその一方で,遅延ローディングのサポートに関してはどちらも今のところ,この方針とは相反するVirtual Proxyパターン(プロパティをvirtualにする必要がある)を使用している。

永続性非依存は一般論としてよいプラクティスと見なされている。いわゆるActive Recordパターンを使った場合とは違い,ビジネスルールを永続化ロジックから分離することが可能だからだ。これによって設計全体がシンプルに,よりテストしやすいものになる。

この記事に星をつける

おすすめ度
スタイル

こんにちは

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

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

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

コミュニティコメント

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

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

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。