今回は、データの永続化の役割を担うパーシステンス層について見ていきます。パーシステンス層は、データベースとドメイン層の間の仲介をすると考えられます。ドメイン層に必要なデータをデータベースから取得して、ドメイン層が利用できるような仕組みをパーシステンス層は提供します。パーシステンス層の役割は、ドメイン層が利用しやすいように永続化データを提供することです。それでは、パーシステンス層において、どのようなことを考慮しなければならないか考えてみましょう。
パーシステンス層に求められることは次のようなことです。
ドメイン層は、Javaなどのプログラム言語が使用されますが、データベースへはSQLを利用してアクセスする必要があります。ドメイン層のビジネスロジックにSQLなどのほかの言語が混在することは生産性・保守性の面から望ましくありません。そのため、パーシステンス層には、プログラム言語とSQLとの違いを吸収する役目を持たせ、ドメイン層ではSQLなどを意識させないようにします。
オブジェクト指向分析で導かれた概念モデルのエンティティ構造とデータベース設計から導き出される論理データベース構造との間のギャップをなくすようにパーシステンス層を設計する必要があります。
これらのSQLなどのデータベースに対する処理ロジックを隠ぺいするとともにデータベースを扱う際の特有の課題にも対応する必要があります。例えば、複数のトランザクションが並行して実行される際に、永続化データを扱うときに考慮しなければならない処理方式があります。それが、「一意性」や「オフライン並行性」などです。
パーシステンス層は、特定のデータベースを前提にして設計されますが、ドメイン層は、特定のデータベースに依存したつくりにはしたくありません。パーシステンス層を交換してもドメイン層には影響しないような設計にします。
それでは、「並行性」「一意性」「同期」「オフライン並行性」について少し考えてみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.