「データの永続性」に配慮した設計保守性・拡張性に優れたシステムを作る(9)(1/4 ページ)

» 2007年05月15日 12時00分 公開
[野村日立ソフトウェアエンジニアリング]

今回は、データの永続化の役割を担うパーシステンス層について見ていきます。パーシステンス層は、データベースとドメイン層の間の仲介をすると考えられます。ドメイン層に必要なデータをデータベースから取得して、ドメイン層が利用できるような仕組みをパーシステンス層は提供します。パーシステンス層の役割は、ドメイン層が利用しやすいように永続化データを提供することです。それでは、パーシステンス層において、どのようなことを考慮しなければならないか考えてみましょう。

パーシステンス層での課題

 パーシステンス層に求められることは次のようなことです。

プログラム言語的なインピーダンスミスマッチの吸収

 ドメイン層は、Javaなどのプログラム言語が使用されますが、データベースへはSQLを利用してアクセスする必要があります。ドメイン層のビジネスロジックにSQLなどのほかの言語が混在することは生産性・保守性の面から望ましくありません。そのため、パーシステンス層には、プログラム言語とSQLとの違いを吸収する役目を持たせ、ドメイン層ではSQLなどを意識させないようにします。

概念モデルと論理データベース構造とのインピーダンスミスマッチの吸収

 オブジェクト指向分析で導かれた概念モデルのエンティティ構造とデータベース設計から導き出される論理データベース構造との間のギャップをなくすようにパーシステンス層を設計する必要があります。

永続化における特有な処理の隠ぺい

 これらのSQLなどのデータベースに対する処理ロジックを隠ぺいするとともにデータベースを扱う際の特有の課題にも対応する必要があります。例えば、複数のトランザクションが並行して実行される際に、永続化データを扱うときに考慮しなければならない処理方式があります。それが、「一意性」や「オフライン並行性」などです。

交換可能性

 パーシステンス層は、特定のデータベースを前提にして設計されますが、ドメイン層は、特定のデータベースに依存したつくりにはしたくありません。パーシステンス層を交換してもドメイン層には影響しないような設計にします。

 それでは、「並行性」「一意性」「同期」「オフライン並行性」について少し考えてみましょう。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ