
182
O/Rマッパーには様々な種類が存在します
※ 16
。Hibernateは2000
年代初頭に登場したO/Rマッパーの先駆けとなるフレームワークであ
り、狭義のO/RマッパーはHibernateのようなタイプを指します。こ
のタイプのO/Rマッパーは、オブジェクト構造とテーブル構造との
マッピングをメタ情報として定義することで、フレームワークがSQL
を自動生成してくれるため開発者が直接SQLを書く必要がありません。
クエリを投げたい場合は、SQLの代わりにフレームワークが提供する
独自のクエリ言語を使用します。
狭義のO/Rマッパーは、業務要件の実現のために複雑なクエリが必
要となった場合の実装難易度の高さや、パフォーマンス問題などが懸念
事項となります。そのため、開発者がSQLを記述して、クエリ実行結
果をオブジェクトにマッピングするタイプのO/Rマッパーが生まれ、
広く使われるようになりました。
どのタイプのO/Rマッパーを採用するかは、アプリケーション特性
や開発チームの経験やスキルにもよるため、一概にどれが正解とは言え
ません。アーキテクトがトレードオフ分析と評価に基づいて選定を行う
必要があります。
CQRSパターン
狭義のO/Rマッパーを用いると、開発者がSQLを書くことなくオブ
ジェクトモデルをデータベースから読み込んだり、更新したりすること
が可能です。これにより、オブジェクトを用いたビジネスルールやビジ
ネスロジックの実現に注力することができるのが大きなメリットです。
一方で、先に述べたように複雑なクエリの実現難易度の高さやパフォー ...