オブジェクトが分離エンティティであるかどうかをHibernateがどのように識別しているのだろうか。私は、特定の方法を求めていない、ちょうどその背後にあるメカニズムを理解したい。Hibernateで分離されたエンティティを確認する
1
A
答えて
1
JBossのドキュメントから:
戸建 - 分離されたインスタンスは 、永続的となっているが、そのセッションが閉じられたオブジェクトです。もちろん、オブジェクトへの参照はまだ有効ですが、 が有効です。この状態では、デタッチされたインスタンスが に変更されることさえあります。デタッチされたインスタンスは、遅い時点で の新しいセッションに再接続することができ、それを(そしてすべての変更) を再び永続化します。この機能により、ユーザーの思考時間を必要とする実行単位の長いモデル が有効になります。私たちは、ユーザの という観点からは、アプリケーション取引(すなわち、作業単位)を と呼びます。
したがって、Hibernateは基本的にセッションと接続オブジェクトを追跡します。 永続性のためにそのセッションに関連付けられているオブジェクトはすべて切り離され、他のPOJOと同じようになります。
は、だから何Hibernateが行うことは次のとおりです。
- は、オブジェクト参照の
session.evict()
またはセッションからオブジェクトを削除しsession.clear()
呼び出します。 - Hibernates永続マネージャは、オブジェクトの状態を判断する識別子の存在に依存します。オブジェクトに識別子がある場合、オブジェクトは永続的です。セッションに属していない場合はDETACHEDです。
- デタッチされたオブジェクトは、新しいセッションが開かれた後に再関連付けしてデータベースと同期させることができます。独立オブジェクト参照に
session.update()
又はsession.saveOrUpdate()
を呼び出す - バック永続状態に分離オブジェクトを移行します。
- デタッチされたオブジェクトがに再接続された場合、はデータベースがオブジェクトの現在の状態で更新されます。分離された状態で行われた変更を含めることができます。
参考文献はhereです。
+0
@TimBiegeleisenええ、申し訳ありませんが、絶えず編集していました。今すぐ答えを更新しました。 –
関連する問題
- 1. Hibernate分離エンティティが継承するために渡す
- 2. フラッシュ時に分離されたエンティティ
- 3. 分離されたDocker execコマンドのプロセスを確認します
- 4. Entity Framework 6に分離されたエンティティを保存します。
- 5. ネストされたHibernateエンティティ
- 6. 分離エンティティを参照するのはなぜですか?jpa hibernate
- 7. エンティティで埋め込みクラスを使用している間、分離されたエンティティが継承されます。
- 8. 分離された子を持つHibernateのマージ親
- 9. 分離されたエンティティはプロパティを更新しません
- 10. 分離されたエンティティが1対多の関係でSpringを持続するために渡される
- 11. ADO.net Entity Framework:分離されたエンティティのcertianプロパティのみを更新する
- 12. テスト分離ツールを確認してください
- 13. IntelliJでヘッドの分離状態を確認できますか?
- 14. 分離されたエンティティのライフサイクルコールバックは、マージバック時に呼び出されません。
- 15. ASP.NETエンティティは分離コード
- 16. 分離されたオブジェクトをJPAに引き渡す方法はありますか? (分離されたエンティティが継承に渡されます)
- 17. セロリは、分離された
- 18. Django PostgreSQLの設定と分離された認証情報ファイル?
- 19. 2つのテーブル間でHibernateエンティティを分割する
- 20. Spring-Hibernateのログ - ログファイルの分離
- 21. OpenStackで分離されたフローティングIPを再利用する
- 22. Hibernate:(エンティティ)スーパークラスのOneToManyマップされたフィールドをオーバーライドしますか?
- 23. EF 4.1で1対多の関係に分離されたエンティティを追加するコードファースト
- 24. Entity Framework 6 - 分離されたエンティティが重複したナビゲーションプロパティの保存を防止する
- 25. 生成されたパスワードを分度器で確認する方法は?
- 26. エンティティを分離すると、消費されるメモリが削減されますか? (Entity Framework)
- 27. C++の分離されたフリーリスト
- 28. Herokuレビューアプリ - 分離されたバックエンドとフロントエンド
- 29. 分離されたオブジェクトを永続化する必要がある実際のシナリオ:Hibernate
- 30. セッションを永続化すると分離されたエンティティが継承エラーになる
基本的に、各セッションには、そのセッション内のすべてのエンティティを含むIdentityHashMapがあります。 –
これは良い質問ではないかと思います。 StackOverflowでは、あなたが自分自身を見つけるために何らかの努力をしたことを実証するはずです。この質問に答える唯一の方法は、Hibernateのソースコードを読んで、彼らがどのようにして行ったかを正確に調べることです。私たちの誰もがどうしようもないと思うかもしれませんが、誰もソースコードを読まずに答えを知る人はいません。あなたはソースコードTuanで自分自身を見つけようとしましたか?もしそうなら、あなたはどこまで手に入れましたか?おそらくJB Nikizetは正しいでしょう。おそらくJB NizetはHibernateの開発者であり、まさに彼らのやり方です。 – DavidS
私はHibernateの開発者ではなく、私はソースコードを調べました。 –