バッチ処理に関する Hibernate のコード例を次に示します。
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Customer customer = new Customer(.....);
session.save(customer);
if ( i % 20 == 0 ) { //20, same as the JDBC batch size
//flush a batch of inserts and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();
コードの冒頭では、を使用しますopenSession()
。しかし、コードを書くときは、を使用しますgetCurreentSession()
。org.hibernate.TransactionException: nested transactions not supported
エラーが発生するようです。
なぜこれが起こるのか誰か説明できますか?