ユニット検査で異する必要のある取引に
-
23-08-2019 - |
質問
私はアプリケーションを使用するOracleの構築に認証メカニズムの管理ユーザーアカウントやパスワードをの応用も使用して行レベルのセキュリティ.基本的にはすべてのユーザー登録の申請を取得するOracleユーザー名とパスワードの代わりに典型的なエントリ"利用者"とする。ユーザーの受け取りもラベルをあます。このタイプの機能を必要とするの執行DMLと異の組み合わせには多くの場合、この問題点で異を行う暗黙を設定します。エラーが発生した場合には後DDL文が実行された、ザクションマネジメントのないロールすべます。例えば、新しいユーザー登録のシステム以下のも場所:
- トランザクションの開始
- 挿入者詳細が入ります。(氏名等) -DML
- をoracleアカウント(ユーザの作成testuser特定したパスワード;)-DDL暗黙のコミットする取引は終了します。
- 新規取引を開始します。
- をDML statments(挿入、更新します。
- エラーが発生し、取引のみロールバステップ4.
を解決するために必要となる上記の論理として設計していると思うが難しい単体テストこのタイプの機能性及び管理するとともにデータアクセス。また、データベースを下やエラー発生時の単体テスト(ユニットテストの原因となった試験のスキーマによる人為的な汚染の試験データにしていくことが可能かもしれない。けで十分ですの拭き取り試験のスキーマーががんの悩みデータベースの故障を生産環境です。私は見るための戦略を管理します。
これはJava/Springます。春は提供する取引の管理です。
解決
あなたは、行レベルのセキュリティとの組み合わせでのOracleのプロキシ認証を使用する必要があります。
これを読む: http://www.oracle。 COM /技術/パブ/記事/ dikmans-のTopLink-security.htmlする
他のヒント
まず私は次のようにコメントしている。悪いことやっています。の原因
- 接続に基づくユーザーです。ることを意味していま大きくなる特典の接続をプールした.でもな規模でものすごくです。ま10,000ユーザーが使い続けられる開閉ハード接続ではなくソフト接続プール);や
- どんな発見を除去ユーザーはDDLなDMLは、このように本体を万が一紛失してしまっ"transactionality".
なぜうまいのですがい 強く お勧めを実装するユーザーの応用なデータベースの層である。
なかでどのように解決問題、基本的にはできない。とした場合はテーブルを作成またはインデックスの中のシーケンスです。
私は以前のコメントのいくつかに反対し、Oracleビルトインアカウントのセキュリティを使用する利点の多くがあることを言うでしょう。あなたはどのようにPRAGMA AUTONOMOUS_TRANSACTION宣言されている別のパッケージでOracleアカウントの作成をラップについて、追加の情報をユーザの影のテーブルのいくつかの並べ替えでこれを補強しなければならないとへの挿入を行っているパッケージに成功事例の/失敗のステータスを返した場合シャドウテーブル?私は、これは、トランザクションからのOracleアカウントの作成を分離するだろうと考えています。