1
私は <小道具キー= "hibernate.jdbc.batch_size" を持っている> 30 < /小道具>hibernate.jdbc.batch_sizeが動作していることを確認するにはどうすればよいですか?私の休止状態のプロパティで
私のコードで私は
final StatelessSession sSession = sessionFactory.openStatelessSession();
try {
sSession.connection().setAutoCommit(false);
} catch (final SQLException se) {
// log a message
}
final Transaction tx = sSession.beginTransaction();
try{
for (some loop) {
Customer customer = new Customer(.....);
sSession.insert(customer);
/* Do we need to flush a stateless session? It doesn't have methods for it
if (i % 30 == 0) { //30, same as the JDBC batch size
//flush a batch of inserts and release memory:
sSession.flush();
sSession.clear();
}
*/
}
//sSession.flush();// Do we need to flush a stateless session? It doesn't have methods for it
//sSession.clear();
} finally{
tx.commit();
sSession.close();
}
マイPOJOに似た何かをするには、以下があります
ただし、バッチサイズを変更すると、全体の実行時間に影響しないようです。実際に動作していることをどのように確認できますか?
ありがとうございます!
はい、私はまだ30だけでなくすべての行を持っています。 – user973479
ok then batching doesnt work。一般的なシナリオは、 "identity"または "native" idジェネレータを使用し、idを取得するためにHibernateがsave()でimmediatlyに移動する必要がある場合です。 – Firo
正解、身分証明セットがありません。メインポストの更新されたコードを参照してください。 – user973479