これはおそらく「設計」またはスタイルの問題です。Hibernate トランザクションがどれほど複雑である必要があるか、または複雑になる可能性があるかを検討しています。Hibernate を使用してメッセージをデータベースに永続化するアプリケーションを使用しています。
メッセージ POJO を構築するには、メッセージから 1 対多の関係をそれぞれの永続オブジェクトに分解する必要があります。たとえば、メッセージには「city」フィールドが含まれています。メッセージから都市が抽出され、データベースで同等の都市オブジェクトが検索され、結果のオブジェクトがメッセージ POJO に追加されます。これはすべて、1 つのトランザクション内で行われます。
- 取引開始
- 重複のテスト
- 都市オブジェクトを取得する
- メッセージ オブジェクトの setCity(cityObject)
- 国オブジェクトを取得する
- メッセージ オブジェクトの setCountry(countryObject)
- メッセージ オブジェクトを永続化する
- commit トランザクションの終了
実際、実際のトランザクションはかなり複雑です。これは合理的な構造ですか、それとも各タスクを 1 つのトランザクション内で完了する必要がありますか (1 つのトランザクション内のすべてのタスクではなく)? 2 番目の質問は、トランザクション内のタスクを設計する際のベスト プラクティスに関連していると思います。参照整合性のためにいくつかのタスクをグループ化する必要があることは理解していますが、常にそうであるとは限りません。