1

SO には、jpa/Hibernate を介してオブジェクトを永続化する際のデータの検証に関する投稿がたくさんあることを知っています。回答のほとんどは、実際の永続化中に例外がスローされることはめったにないように、永続化の前にデータの読み取りを実行する必要があると述べています。

これは、データベースの制約に依存するのとは対照的に、パフォーマンスに悪影響を及ぼします。また、休止状態の例外がいつ、どのように発生するか正確にはわからないため、永続化の前にこのように大量のデータを読み取る理由は重要であると思われます。しかし、その理由では、まれな理由で例外が発生した場合でも、適切に処理することはできません。

したがって、私の考えは、オブジェクトのリストを反復処理する Bean (beanA) を使用し、各反復で、persistOneObject() というメソッドを持つ別の Bean (beanB) を呼び出すことでした。persistOneObject() には @requires_new アノテーションが付けられています。したがって、失敗した場合、その単一のトランザクションのみがロールバックされ、新しいトランザクションの次のオブジェクトに進みます。

これは理論的には機能するはずですか、それとも Hibernate が実際にいつコミットするかわからないため、この動作に到達するのは難しいですか? これはデザインが悪いのでしょうか?実装に関する具体的な考えではなく、設計に関する一般的な考えを聞きたいので、ここではコード例を提供しません。それを解決する他の方法はありますか?または、永続化する前に読み取りを行う必要がありますか?

ありがとうございました!

4

0 に答える 0