データ暗号化はリポジトリパターン内に属しますか?
-
03-07-2019 - |
質問
機密データを保護するためにアプリケーションレベルの暗号化を使用しています。物理データベースに保存する前にフィールドを暗号化する必要があり、ユーザーインターフェイスに表示する前にフィールドを解読する必要があります。
アプリケーションでリポジトリパターンを適用しています。
データの暗号化/復号化コードは、Repositoryクラスの内部または外部に属しますか?
現在の考えでは、データが静止しているとき、暗号化はリポジトリの一部であり、リポジトリを使用するサービスクラスはこの暗号化コードで乱雑になってはいけません。
サービスクラスは検証とビジネスロジックを担当しますが、暗号化アルゴリズムとデータの保存方法は、リポジトリの実装次第です。
これは合理的な慣行ですか、何か不足していますか?
解決
あなたは確かにサービスクラスで暗号化を望まない。
ある意味では、あなたは実際にあなたが言うときにあなた自身の質問に答える
ただし、暗号化アルゴリズムと保存時のデータの保存方法は、リポジトリの実装次第です。
暗号化はデータの保存方法の一部であるため、リポジトリ内に属します。
他のヒント
サービスレイヤーに配置します。その理由は次のとおりです。
ビジネスルール/ドメイン要件の観点から見て、データの暗号化は要件ですか?テストで検証する必要がありますか?その場合、他のテスト可能なビジネスロジックをすべて配置したのと同じ場所に配置する必要があります。つまり、サービス内。
私に関する限り、ビジネスロジック(暗号化するもの、暗号化しないもの)はリポジトリに属していません。永続化されるオブジェクトは、リポジトリに渡されたときに永続化の準備ができている(またはできる限り近い)必要があります。それ以外の場合、リポジトリはビジネスルールの永続化と の実装を担当し、リポジトリパターンを使用しなくなります...