2012-03-21 3 views
0

나는 id와 version 필드를 가진 간단한 예제 엔티티 A를 가지고있다. ID 생성 전략은 TABLE으로 설정됩니다. 속성 hibernate.jdbc.batch_sizehibernate.jdbc.batch_versioned_data20true으로 설정됩니다. Hibernate 일괄 처리 예기치 않은 동작

나는 다음과 엔티티 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) 문 결과 . 최대 절전 모드 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 일괄 처리를 활성화하면 rewriteBatchedStatements JDBC 드라이버 설정이 으로 설정되면으로 설정됩니다.