Hibernateで一時テーブルを作成する方法
-
17-09-2020 - |
質問
目標
- ネイティブSQLを使用せずにHibernateで
CREATE TEMPORARY TABLE
ステートメントを呼び出します。これは、HQLまたはHibernate APIのみを使用することを意味します。 - オブジェクトを一時テーブルに保存します。
- 既存のテーブルと一時テーブルを利用するストアドプロシージャを呼び出します。
-
DROP
終了時に一時テーブルを作成します。 (私はそれが必要ではないことを知っています、しかし私はそれが良い習慣だと思います。) - 私はSQLに非常に精通していますが、Hibernateに新しい。
- 私はあなたが知っているので、プロジェクトで休止状態を使うことを余儀なくされています、誰かの決断。
- WebフォームをOracleデータベースに保存します。
- Webフォームには、テキストフィールド(他の人によって設計された)が含まれています(他の人によって設計されています)。
- ユーザーが
Save
をクリックすると、を単一のトランザクションに保存する必要があります。 - Webフォームはデータベースビューでバックアップされます。
- データベースビューは、eAvパターンを使用してデータベーステーブルから作成されます。 (列が動的に動的なためです。)
- Webフォームの各テキストフィールドは、データベーステーブルの1行でモデル化されています。
- Webフォームの表示ビュー上の
SELECT
ステートメントを使用します。 - Webフォームの更新ビュー上の
UPDATE
ステートメントを使用します。これはビューのINSTEAD OF
トリガーを呼び出します。 - 変更された値のみが更新されます。更新ごとに監査証跡があります。
- ユーザーの通知なしに他のユーザーが更新する場合、トランザクションはロールバックされます。このようなシナリオの例は、
(I)
が4
を表示したときのaは(II)
が5
を表示すると、最初のユーザーがフィールドを(III)
に更新し、Webフォームを送信します。もともと提案された解決策
- Ajax(jQuery)を使用して、テキストフィールドの変更を検出し、ユーザーによって変更されたものだけを送信します。
- しかし、データベース内で別のユーザーが行われる変更を検出する必要があります。
- ユーザーが
2
をクリックすると、一時テーブルを作成します(一時テーブルは現在のセッション/接続によってのみ見られ、セッションが切断されたときに自動的にドロップされます)。オブジェクト(セル)を一時テーブルに保存します。 - トランザクションを起動します。
- 既存のテーブル(またはパフォーマンスのために関連する行のみ)の一部をロックします。
- 送信されたデータを既存のデータと比較します。
- 気付かれない変更が行われた場合は、トランザクションをロールバックしてください。
- 必要な行を更新してください。
- トランザクションをコミットしてテーブルのロックを解除します。
- 一時テーブルを削除します。
背景
解決策がより良い仕事をすることになっている
アイデアはありますか?
解決
これはあなたの正確な要件には答えませんが、答えの試みがないことを考えると... http://csvjdbc.sourceforge.net/
Hibernateを通してそれをする要件に準拠していない間は、データベースの不具合とクロスプラットフォームです。
所属していません StackOverflow