質問

目標

  1. ネイティブSQLを使用せずにHibernateでCREATE TEMPORARY TABLEステートメントを呼び出します。これは、HQLまたはHibernate APIのみを使用することを意味します。
  2. オブジェクトを一時テーブルに保存します。
  3. 既存のテーブルと一時テーブルを利用するストアドプロシージャを呼び出します。
  4. DROP終了時に一時テーブルを作成します。 (私はそれが必要ではないことを知っています、しかし私はそれが良い習慣だと思います。)
  5. 背景

    1. 私はSQLに非常に精通していますが、Hibernateに新しい。
    2. 私はあなたが知っているので、プロジェクトで休止状態を使うことを余儀なくされています、誰かの決断。
    3. WebフォームをOracleデータベースに保存します。
    4. Webフォームには、テキストフィールド(他の人によって設計された)が含まれています(他の人によって設計されています)。
    5. ユーザーが Save をクリックすると、を単一のトランザクションに保存する必要があります。
    6. Webフォームはデータベースビューでバックアップされます。
    7. データベースビューは、eAvパターンを使用してデータベーステーブルから作成されます。 (列が動的に動的なためです。)
    8. Webフォームの各テキストフィールドは、データベーステーブルの1行でモデル化されています。
    9. Webフォームの表示ビュー上のSELECTステートメントを使用します。
    10. Webフォームの更新ビュー上のUPDATEステートメントを使用します。これはビューのINSTEAD OFトリガーを呼び出します。
    11. 変更された値のみが更新されます。更新ごとに監査証跡があります。
    12. ユーザーの通知なしに他のユーザーが更新する場合、トランザクションはロールバックされます。このようなシナリオの例は、(I)4を表示したときのaは(II)5を表示すると、最初のユーザーがフィールドを(III)に更新し、Webフォームを送信します。

      もともと提案された解決策

      1. Ajax(jQuery)を使用して、テキストフィールドの変更を検出し、ユーザーによって変更されたものだけを送信します。
      2. しかし、データベース内で別のユーザーが行われる変更を検出する必要があります。
      3. 解決策がより良い仕事をすることになっている

        1. ユーザーが 2 をクリックすると、一時テーブルを作成します(一時テーブルは現在のセッション/接続によってのみ見られ、セッションが切断されたときに自動的にドロップされます)。オブジェクト(セル)を一時テーブルに保存します。
        2. トランザクションを起動します。
        3. 既存のテーブル(またはパフォーマンスのために関連する行のみ)の一部をロックします。
        4. 送信されたデータを既存のデータと比較します。
        5. 気付かれない変更が行われた場合は、トランザクションをロールバックしてください。
        6. 必要な行を更新してください。
        7. トランザクションをコミットしてテーブルのロックを解除します。
        8. 一時テーブルを削除します。
        9. アイデアはありますか?

役に立ちましたか?

解決

これはあなたの正確な要件には答えませんが、答えの試みがないことを考えると... http://csvjdbc.sourceforge.net/

Hibernateを通してそれをする要件に準拠していない間は、データベースの不具合とクロスプラットフォームです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top