TL;DR

  • テーブルはレコード型に直接マッピングできる。ただし、RDB にはプリミティブな値しか保存できず、選択型もそのままでは表せない。
  • RDB とやり取りするときは、ドメインオブジェクトと DTO を相互に変換する。ORM は使わない。

内容

第12章 Persistence のうち、リレーショナルデータベース(RDB)を扱う部分の概要である。詳細は節ごとのページにまとめた。

テーブルとオブジェクトのマッピング

テーブルはレコード型に直接マッピングできる(テーブルはレコード型に直接マッピングする)。ただし、RDB にはプリミティブな値しか保存できないので、保存する前に変換が必要になる。また、選択型にはそのまま対応できない。

選択型は、次のどちらかの方法でマッピングする(選択型をテーブルにマッピングする手法)。基本は 1 つ目を使い、ケース間の共通点が少ないときだけ 2 つ目を選ぶ。

  1. すべてのケースを同じテーブルに格納する
  2. ケースごとに別のテーブルに格納する

ネストした型は、その型がエンティティなら別のテーブルに、値オブジェクトなら同じテーブルに保存する(ネストした型をテーブルにマッピングする手法)。

読み取りと書き込み

RDB とやり取りするときは、ドメインオブジェクトと DTO を相互に変換する。読み取りは RDB からの読み取り と RDB から選択型を読み取る、書き込みは RDB への書き込み にまとめた。

ORM ではドメインの整合性を保てないので、RDB の結果をドメインオブジェクトにマッピングするときは ORM を使わない。

キーワード