2012-01-13 15 views
0

私はマスター - 子テーブルを持っています。ユーザーは、マスターアイテム/エンティティを選択した後に子を追加/削除できます。マスターアイテムリスト選択インデックスが変更されると、この選択されたマスターアイテムの子アイテムを子テーブル/アライリストにDBから入力します。ユーザーが子の追加/削除ボタンをクリックすると、エンティティマネージャを開き、トランザクションを開始し、子エンティティ/アイテムを保持または削除しました。私の問題は、ユーザーが別のマスターアイテムを選択している間、新規および削除された子エンティティの追跡を維持することです。新しい選択されたマスターアイテムの子エンティティを埋め込む前に、子テーブル/ Arraylistをクリアしています(しかし、永続コンテキストをクリアしません)。ユーザーが前のマスターアイテムを再度選択したときに、コミットされていない新規アイテムを反映させたい。希望は私の問題を正しく説明しました。 JPAでhibernateを使用する。ありがとう。JPAエンティティを永続化/削除してもコミットされないようにするには?

答えて

0

さて、クエリを実行するだけで、選択したマスターのすべての子を取得できます。トランザクションがまだコミットされていない場合でも、トランザクションはデータベースを保存しているので、データベース内に表示されます。

しかし、長いトランザクションを使用するとスケーラビリティが得られず、すべての種類のロックとstalenessの問題が発生することに注意してください。ユーザーが子供を追加したり削除したりするたびに子供を救い、コミットしないのはなぜですか?

+0

私はそのようにも期待している。奇妙な。昨日は期待どおりに働いていなかったが、今日はそうだった。とにかくありがとう。私が取り組んでいるプロジェクトはjavaFXプログラムであり、デスクトップ上ではほとんどユーザーがいないだけで動作します。そのため、トランザクションを長く保つ理由です。 –

0

私は、ユーザーのクリックの間にトランザクションを開いたままにしたくないです。彼はcoffeブレークに行き、それを残すことができます。私はむしろ一時的なテーブル、セッション、キャッシュ、隠し入力(ウェブフロントエンドの場合)などを使用したいと思う。

+0

セッションとキャッシュについて説明し、リンクを張ることができますか?あなたはJPAの文脈でこれを言いましたか?私のプロジェクトには、WebサーバーやWebアプリケーション、接続プール、Webフロントエンドはありません。 –

関連する問題