2012-03-21 7 views
0

私はIDとバージョンフィールドを持つ簡単なエンティティAを持っています。 ID生成戦略はTABLEに設定されています。プロパティhibernate.jdbc.batch_sizeおよびhibernate.jdbc.batch_versioned_dataは、20およびtrueに設定されています。予期せぬ動作をバッチ処理することがありません

私は次のようにエンティティAのバッチ挿入を実行しようとしてい:

for (int i = 0; i < 500; i++) { 
      A a = new A(); 
      a.persist(); 
      if (i % 20 == 0) { 
       em.flush(); 
       em.clear(); 
      } 
     } 

MySQLのログを見るとinsert into a (version, id) values (0, 1), (0, 2),...(0, 20)が25回繰り返しのように、私は何かを期待していたのに対し、これは、500行の別々のinsert into a (version, id) values (0, X)文になり。 Hibernateは3.6.8、MySQLの5.5を使用して

org.hibernate.jdbc.AbstractBatcher - Executing batch size: 20
org.hibernate.jdbc.AbstractBatcher - no batched statements to execute

:デバッグにhibernate.jdbcログレベルを設定する

を示しています。

私はここで何が欠けていますか?

答えて

0

私自身の質問に答えるには - hibernateは、複数の行を挿入するものに単一の挿入文をグループ化しないようです。 hibernateバッチを有効にすると、rewriteBatchedStatements JDBCドライバの設定がの場合、に設定されます。

関連する問題