Hibernateはデタッチされたオブジェクトと一時オブジェクトを区別します。 私は、データベースに相談することなく、意味します。たとえば、IDを手動で設定する一時オブジェクトを永続化しようとすると、Hibernateは自分のオブジェクトが一時的であることをどのように認識しますか?またはidは空ではないので、私のオブジェクトは切り離されたオブジェクトと見なされますか?Hibernateはデタッチされたオブジェクトと一時的なオブジェクトをどのように区別し、どこで手作業でIDを設定しますか
2
A
答えて
2
過渡 - それはちょうどnew演算子を使用して をインスタンス化されており、それはHibernateの セッションに関連付けられていない場合、オブジェクトが一時的です。データベースには永続的な表現はなく、識別子値は に割り当てられていません。
デタッチされた - デタッチされたインスタンスは、永続化されたオブジェクトで、 ですが、そのセッションは閉じられています。もちろん、オブジェクトへの参照はまだ有効ですが、 が有効です。この状態では、デタッチされたインスタンスが に変更されることさえあります。
Hibernate APIはgetIdentifierメソッドでClassMetadataクラスを持ちます。これにより、エンティティのステージを確認できます。
SessionFactory sb f = HibernateUtil.getSessionFactory();
ClassMetadata metadata = sf.getClassMetadata(data.getClass());
if(metadata.getIdentifier(data) == null) {
return TRANSIENT;
}
関連する問題
- 1. RunWorkerCompletedEventArgsオブジェクトでUserStateをどのように設定しますか?
- 2. Hibernate:many-to-oneオブジェクトとの作業を一時的にマージしますか?
- 3. Hibernate/JPAはオブジェクトを別のオブジェクトとどのようにして保持しますか?
- 4. Hibernateはオブジェクトをどのように削除(obj)しますか?
- 5. これらのHibernateオブジェクトはどのように異なるのですか?
- 6. これらのオブジェクト(FirstLevelEmployeeとSecondLevelEmployeeなど)を区別するにはどうすればよいですか?secondLevelEmployeeの詳細を印刷しますか?
- 7. このモジュール/クラス設定ではどのように作業できますか?
- 8. 手作業でJavaプログラムを手動で起動することなく、TelegramBotを常時動作させるにはどうすればよいですか?
- 9. Ruby - MatchDataオブジェクトは.newなしでどのように作成されますか?
- 10. コードで作成されたオブジェクトをどのようにコード化しますか?
- 11. Hibernate Persistenceオブジェクトが更新されないようにする方法データをそのオブジェクトに設定したら?
- 12. 「オブジェクト」として返された値を設定するにはどうすればよいですか?
- 13. フィールド値をオブジェクトに設定しようとしているHibernate
- 14. どのようにオブジェクトを動的に作成できますか?ここ
- 15. AutoMapper:手作業で設定したプロパティ
- 16. どのようにオブジェクトをデフォルト設定できますか?
- 17. デタッチされたオブジェクトを永続化するにはどうすればよいですか?
- 18. このGroovy JSONオブジェクトに一般的にどのようにアクセスしますか?
- 19. Entity Framework - 新しいオブジェクトのIDを手動で設定する
- 20. これはどのようにしてprocオブジェクトを作成しますか?
- 21. デタッチされたオブジェクトのデフォルトのオプティミスティックロックを休止しますか?
- 22. オブジェクトが保存されていない一時的なインスタンスを参照します:どのように保存されたオブジェクト
- 23. あるオブジェクトのインスタンス変数を別のオブジェクトからどのように設定しますか?
- 24. Grails:デタッチされたオブジェクトがアタッチされているかどうかの確認
- 25. .vimrcをファイルタイプまたは作業ディレクトリと区別しますか?
- 26. オブジェクトで終わりましたが、どうすればこの作業ができますか?
- 27. HibernateでStatementInspectorをどのように設定できますか?
- 28. コンストラクタでは、構築されたオブジェクトを別のものに設定します
- 29. どのようにして、この動的に作成された3Dオブジェクトを親の中心に置くことができますか?ここで
- 30. HibernateはEAGERに設定されたオブジェクトのプロキシを返します