1

HibernateTemplate を使用して休止状態のバッチ挿入を実行したいのですが、このクラスを含む正しい jar を見つけることができません。spring.jar に存在する必要があることはわかっていますが、spring.jar をダウンロードする場所を見つけることができません。この jar を取得するために、Spring フレームワーク全体もダウンロードしてみましたが、残念ながら、ダウンロードしたパッケージに spring.jar のようなものは見つかりませんでした。名前が変更されている可能性があります。この HibernateTemplate クラスを見つけることができる jar を教えてください。

また、休止状態でのバッチ挿入に HibernateTemplate クラスを使用しますか、それとも休止状態でのバッチ挿入のための他のより良い代替手段がありますか?

よろしく、

4

2 に答える 2

1

バッチ処理に Hibernate を使用することはお勧めしません。Hibernate で構築されたビジネス レイヤーが既にあり、一部のコードを再利用したい場合を除き、Spring Batch などのフレームワークによって管理される可能性があるプレーンな古い JDBC でバッチ処理を行う必要があります。

Hibernate を使用する場合は、StatelessSession.

HibernateTemplateセッションはすでに必要なものをすべて提供しているので、何もする必要はありません。


編集: トランザクションを処理できます:

Session session = sessionFactory.openStatelessSession();
Transaction tx = session.beginTransaction();
// DO SOMETHING
tx.commit();
session.close();

ところで、10 個のアイテムのトランザクションを作成する場合、処理を 10 個の挿入の複数のトランザクションに分割する必要があると思います。取引は本当に必要ですか?いずれにせよ、あるトランザクションは失敗し、他のトランザクションは失敗する可能性があり、挿入されたエンティティとそうでないエンティティが残るためです。

バッチ処理の原子性が必要な場合 (すべて挿入するか、何も挿入しない)、10 要素だけでなく、すべての要素に対してトランザクションを実行する必要があります。ただし、データベースをロックしないように注意してください...バッチに大きな長時間実行トランザクションを使用することはお勧めできません。代わりに、挿入の失敗を自分で補う必要があります。

于 2012-11-04T13:03:38.630 に答える
0

HibernateTemplate クラスは、 spring-framework-3.1.3.RELEASE.ziporg.springframework.orm-3.1.3.RELEASE.jarに含まれている一部です。

プロジェクトで既に Spring フレームワークを使用している場合、バッチ更新に HibernateTemplate を使用しない理由はありません。HibernateTemplate の利点は、Hibernate セッションを気にする必要がないことです。

于 2012-11-03T18:58:03.227 に答える