Hibernateは、いくつかのことに非常に役立ちます。しかし、些細なことは注目の的ではありません。「管理パネル」でデータベースエントリを変更する方法を提供したいと思います。具体的には、商品、そのプロパティ、画像、価格などを変更できるビューが必要です。このため、たとえば、セッションを介して変更する商品の編集ビューを読み込みます。 .get(Product.class、id)。次に、そのプロパティを操作し、名前を変更し、価格を設定し、画像を読み込み、その他必要なことを行います。ただし、最後に、ユーザーは変更を保存するか破棄するかを決定する必要があります。パーツの保存は簡単です。サービスレイヤーでトランザクションを使用してsession.saveを呼び出しますが、その後のセッションフラッシュでは、キャンセルされた製品の変更がデータベースに伝播されるため、破棄は難しい問題のようです。
だから、私の質問は、そのようなスキームをどのように設定するかです。これに対する最善の策は何ですか?私は個人的に次の解決策を見ています:
- カスケードまたはでsession.evict()を呼び出す
- 複製されたコピー/DTOを使用し、保存アクションでマージするか、
- クライアントですべての変更を処理してから、保存時にHibernateエンティティにデータを入力し直します。