私の同僚は、クライアントの DBA がプロジェクトの Oracle DB スキーマのすべての外部キー制約を削除することを提案したと言いました。当初、私はその決定に同意しませんでした。私は DBA ではなく開発者です。そのため、決定の背後にはいくつかの理由がある可能性があることに後で気付きました。だから私はこの決定の長所と短所を得ようとしています.
プロジェクト情報:
- Hibernate パーシスタントを使用した Spring アプリケーション。
- オラクル 10g データベース
- SQLローダーまたはプレーンJDBCのみを使用するバッチジョブがあります。
これが私の長所と短所のリストです(間違っている場合は修正してください)
長所:
アプリケーションの永続化は Hibernate によって管理されるため、外部キーのカスケードは必要ありません。適切なカスケード オプションを使用して Hibernate によって管理されます。
Hibernate DELETE アクション (delete cascading オプションを含む) は、主キー レコードを削除する前に外部キー テーブル レコードを削除します (つまり、参照整合性の問題を回避するため)。この動作は、外部キーなしの場合、外部キーの場合、カスケード付きの外部キーの場合と同じです。ただし、外部キーを追加すると、Oracle の削除操作が不必要に遅くなります。
短所
Hibernate は、オブジェクト間の関連付けと関連付け内のカスケード操作を管理するためのメカニズムを提供します。しかし、DB が持つ完全な参照整合性ソリューションを提供することは決してありません。
SQL ローダーまたはプレーン JDBC のみを使用するバッチ ジョブには、参照整合性が必要です。
皆さん、これについてアドバイスが必要です。あなたの誰かが DBA である場合は、DBA 側の理由を教えてください。
ありがとうございました。