최대 절전 모드 및 일괄 업데이트에 대해 많은 논의가 있었지만, 여기서는 내 특정 시나리오에서 모든 전문가로부터 의견을 얻기를 바랍니다. Document 개체의 목록을 반복하고 각 문서에 대해 Document 개체의 속성으로 DOCUMENT_METADATA 테이블을 업데이트해야합니다.최대 절전 모드 및 일괄 업데이트
표준 JDBC 2.0 일괄 업데이트를 사용하면됩니다. 그러나 JDBC 사용은 응용 프로그램 전체에서 Hibernate를 사용하기 위해 제 자리에있는 소프트웨어 표준에 위배되며 예외를 만들지 않을 것입니다.
Hibernate를 사용하기 위해서 Document 객체의 문서 ID가 주어 졌을 때 DocumentMetadata 객체를 먼저 가져와야한다. 반복하고 DocumentMetadata 속성을 설정 한 다음 테이블을 업데이트해야한다.
내가 내가 N 수 없어요 최상의 경우로, n 개의 레코드
for each document {
//fetch DocumentMetadata object given the id from Document
//invoke setter on DocumentMetadata object
em.persist(DocumentMetadata);
if (count % 50 == 0) {
em.flush(); //flush a batch of updates and release memory:
em.clear();
}
}
(I는 한 번에 약 10,000 개의 레코드를 실행한다)와 같은 뭔가를 할 수는 최대 절전 모드 접근 방식 = 1 업데이트를 선택 위? 내 테이블의 크기 (DOCUMENT_METADATA 테이블에 100 개 이상의 열과 1 백만 개의 레코드가 있음)를 감안할 때 JDBC 접근 방식으로 성능 문제가 발생할 수 있습니다.
의견이 있으십니까?
감사 콥
기술적으로 정확하게 "최대 절전 모드"를 사용하고 있지 않습니다. JPA를 사용 중입니다. JPA 구현은 단지 Hibernate 일 것이다. JPA 컨텍스트에서이 질문을 할 수 있습니다. – BalusC