私の質問は休止状態に関するものです。つまり、データベースに保存するためにキューに入れている2つのオブジェクトがあります。これらのオブジェクトは、すべてのフィールドの値がまったく同じです。私の休止状態は、50回のクエリの後で自動フラッシュするように設定されているので、休止状態に移行すると直ちにこれらのオブジェクトをデータベースにフラッシュしないと仮定しよう。休止状態は、これらのオブジェクトのそれぞれを別個のエンティティとしてデータベースに保存する(重複するレコードを「別個のレコード」として保存する)か、またはこれらのオブジェクトが全く同じ値を持つことを認識し、これらのミラーオブジェクトのインスタンスをデータベース?休止状態のニュアンスセッション
答えて
データベースに1つまたは2つのエンティティがあるかどうかは、equals()(およびhashcode)の実装によって異なります。オブジェクトが等しいと見なされると、エンティティは1つになりますが、そうでない場合は2つになります。
自動生成されたサロゲートキーを使用する場合は、特に注意する必要があります。オブジェクトを初めて保存する前に、キーが割り当てられていません。したがって、equals()の実装はキーの等価性に依存できません。この特別な条件を処理することを確認する必要があります 。
さて、これらのオブジェクトに対してequalsまたはhashcodeが実装されていないので、おそらく私の想定は正しいと思います。つまり、休止状態ではオブジェクトが複製として表示され、1つのコピーのみがデータベースに保存されます。 – Daniel
これは正しいとは思いませんが、デフォルトの動作はオブジェクトが同じオブジェクトを参照しているかどうかをチェックすることでしょうか?これはそうではなく、これらは別個のメモリ位置を占有する別個のオブジェクトである。 – Daniel
はい、equals()のデフォルトの実装では、それらが同一(x = y)の場合にのみtrueを返します。エンティティの2つのインスタンスを作成した場合は、DBに2つのエンティティ(=行)が表示されます。ただし、オブジェクトが同一である場合は、それらをセッションに2回追加すると、エンティティは1つだけになります。 – fhossfel
私の質問は、休止状態に関するものです。つまり、 という2つのオブジェクトがデータベースに保存されているとします。
言い換えれば、データベースに保存したいエンティティが2つあります。
これらのオブジェクトは、フィールドごとにまったく同じ値を持っています。 Javaでは
equals
(及びhashcode
)によって実装オブジェクト・アイデンティティがあります。データベースには行IDがあります - 一意の行を識別する主キー(変換は一意のインスタンスです)。エンティティのインスタンスをテーブルの行にマッピングするので、同じクラス(同じエンティティ)の2つのインスタンスを区別する方法は、各インスタンスに一意のプライマリキーを提供することです。 JPA(HibernateはJPAの実装です)では、フィールド(Entityの属性)に@Id
という注釈を付ける必要があります。一意に識別することができます。
以下のクラスは、一意のIDを持つEntityクラスです。
@Entity
public MyClass
@Id
@GeneratedValue
private Long id;
あなたはどちらかのユニークなIDにあなたが持続またはあなたが@GeneratedValue
で自動生成を使用することができ、それぞれの時間を提供することができます。基礎となるデータベースに応じて異なる世代戦略があります。
はい、私はこれをすべて理解し、これを行っています。それらには、JPAアノテーションでアノテーションされたIdオブジェクトフィールドがあります。私はシーケンスデータベース側で作成されているので、IDの作成を処理するために休止状態をさせています。しかし、私は記録を失っている、彼らは存在しなくなる – Daniel
あなたはどのようにして、どのようにトランザクションが制御されているか、より多くの情報を提供してください。私はこの情報を提供して、JavaのIDがJPAに関係しないことを示しました。 – fg78nc
AOPスプリングトランザクション管理では、オブジェクトを保存するメソッドに、@Transactionalタグが直列化可能な分離レベルで注釈が付けられます。私はSpring Data JPAを使用していますので、オブジェクトが持続するときを管理していなくても、JPAリポジトリを使用してオブジェクトを保存します。 – Daniel
- 1. 休止状態で休止状態
- 2. 休止状態:
- 3. (休止状態)
- 4. 休止状態
- 5. 休止状態:
- 6. 休止状態:休止状態の接続を変更する
- 7. 休止状態のセッションが休止状態でヌルである
- 8. は休止状態
- 9. データベース+休止状態
- 10. ロンボク(休止状態)
- 11. 休止状態:session.load
- 12. 休止状態:エラーサブクエリ
- 13. 休止状態 - リンクエンティティ
- 14. 休止状態4
- 15. が休止状態
- 16. は休止状態
- 17. 休止状態:クエリメタデータ
- 18. と休止状態
- 19. 休止状態 - 別
- 20. が休止状態
- 21. 休止状態:私は休止状態を勉強
- 22. 休止状態の削除
- 23. 休止状態の質問
- 24. 休止状態のロールバック
- 25. 休止状態のSpringユーザートランザクション
- 26. 春の休止状態ManyToMany
- 27. 休止状態のセッションスコープ
- 28. 休止状態の挿入?
- 29. 休止状態の式
- 30. 休止状態でのトランザクション
彼らにはIdフィールドがありますが、その値は何ですか? –
idフィールドはシーケンスで生成され、hibernateによって処理されます。フィールド値は、clobと文字列です。 – Daniel
保存時の値は何ですか? –