ORM とは

作成: 2026.03.24更新: 2026.03.24

ORM とは

ORM(Object-Relational Mapping)は、プログラミング言語のオブジェクトとリレーショナルデータベースのテーブルを自動的に対応づける(マッピングする)仕組みである。オブジェクト指向のプログラミング言語と RDB はデータの表現方法が異なるため、その差異(インピーダンスミスマッチ)を吸収する役割を果たす。

ORM を使うことで、開発者は SQL を直接書かずにデータベースの読み書きが行えるようになる。ただし、「SQL を書かなくてよい」度合いは ORM の種類によって異なる。

なぜ SIer で重要か

SIer の業務システム開発では、データベースアクセスはほぼ必須の処理である。すべての SQL を手書きすることも可能だが、ORM やそれに準ずるフレームワークを利用することで、以下のメリットが得られる。

  • 生産性の向上 --- 定型的な CRUD 処理のコード量が減る
  • 保守性の向上 --- SQL がコード中に散在せず、管理しやすい
  • データベース移行の容易さ --- データベース固有の SQL を減らせる

SIer の現場ではプロジェクト開始時に ORM(またはそれに準ずるフレームワーク)が選定され、プロジェクト標準として全員がそれを使うことになるため、主要な選択肢を理解しておくことが重要である。

基本概念

インピーダンスミスマッチ

オブジェクト指向言語と RDB のデータ表現には根本的な違いがある。

観点オブジェクト指向RDB
データの単位オブジェクト(属性 + メソッド)行(カラムの集合)
関連オブジェクト参照(has-a)外部キー
継承クラスの継承対応する概念がない
識別オブジェクト ID主キー

この差異を「インピーダンスミスマッチ」と呼び、ORM はこれを解消するための技術である。

ORM の 2 つのアプローチ

ORM には大きく分けて 2 つのアプローチがある。

フル ORM 型

テーブルとオブジェクトの対応を設定ファイルやアノテーションで定義し、SQL の生成をフレームワークに任せる方式。Java では JPA(Jakarta Persistence API) とその実装である Hibernate が代表的。

特徴: SQL を書かずにオブジェクト操作でデータベースアクセスが可能
利点: コード量が少ない、DB 製品に依存しにくい
欠点: 発行される SQL の制御が難しい、パフォーマンスチューニングが困難

SQL マッパー型

SQL は開発者が手書きし、SQL の結果とオブジェクトのマッピングをフレームワークが行う方式。Java では MyBatis が代表的。

特徴: SQL を自分で書き、結果のマッピングだけを自動化
利点: SQL を完全に制御できる、パフォーマンスチューニングしやすい
欠点: SQL を手書きするため、コード量がフル ORM より多い

JPA/Hibernate と MyBatis の比較

観点JPA/Hibernate(フル ORM)MyBatis(SQL マッパー)
SQL の記述自動生成(JPQL も使用可)開発者が手書き(XML またはアノテーション)
学習コスト高い(キャッシュ、遅延ロード等の理解が必要)中程度(SQL が書ければ使える)
SQL の制御難しい容易
パフォーマンスチューニング難しい容易
DB 移行の容易さ容易(SQL 自動生成のため)やや手間(SQL の書き換えが必要)

SIer での使われ方

SIer では MyBatis が多い理由

SIer の業務システム開発では、MyBatis(SQL マッパー型)が選ばれることが多い。その理由は主に以下の通りである。

  1. SQL のレビューが可能 --- SIer のプロジェクトでは SQL も設計書の一部としてレビュー対象となる。MyBatis なら XML ファイルに SQL が記述されているため、DBA(データベース管理者)やレビュアーが直接 SQL を確認できる。
  2. パフォーマンス要件への対応 --- 業務システムではバッチ処理や大量データの処理で SQL のパフォーマンスが厳しく求められる。MyBatis なら SQL を直接チューニングできる。
  3. 既存の SQL 資産の活用 --- システムリプレース案件では、旧システムの SQL を流用できることが MyBatis の利点となる。
  4. 学習コストの低さ --- SQL が書ける技術者であれば MyBatis を使えるため、大規模プロジェクトで人員を集めやすい。

TERASOLUNA での採用

NTT データの TERASOLUNA 開発ガイドラインでも MyBatis が推奨されており、多くの SIer プロジェクトがこのガイドラインに準拠している。TERASOLUNA + Spring + MyBatis の組み合わせは SIer の Java 開発における「黄金パターン」とも言える構成である。

JPA が使われるケース

SIer でも以下のケースでは JPA/Hibernate が選ばれることがある。

  • 単純な CRUD が中心のシステム(管理画面など)
  • Spring Boot + Spring Data JPA で素早くプロトタイプを作る場合
  • 海外のチームと共同開発する場合(グローバルでは JPA が主流)

まとめ

  • ORM はオブジェクトと RDB テーブルの対応づけを行う仕組みである
  • フル ORM 型(JPA/Hibernate)と SQL マッパー型(MyBatis)の 2 つのアプローチがある
  • SIer では SQL を直接制御できる MyBatis が多く採用されている
  • SQL のレビュー可能性・パフォーマンスチューニング・学習コストが選定理由となっている
  • TERASOLUNA ガイドラインでも MyBatis が推奨されている