사용자 도구

사이트 도구


java:hibernate:4

문서의 이전 판입니다!


Hibernate 4

문제점

현재 4.2.15버전에서 Comoposite Key 사용시에 Insert 등의 작업시에 closed statement에 대해 getWarnings를 호출하는 문제가 있어보인다. 예외를 잡아서 debug로그로 남기고 그냥 넘어가기 때문에 실질적인 문제는 안되지만 성능상 안 좋아보인다.

HHH-9174 로그 레벨을 체크하여 필요할 경우에만 로그를 찍게 수정되었다. 그러나 근본적인 문제는 Statement가 이미 close 된 상태에서 아래 메소드를 호출한다는 점이다.

org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch#addToBatch.addToBatch에서 statement를 두번 release 한다.

org.hibernate.engine.jdbc.spi.SqlExceptionHelper#handleAndClearWarnings(java.sql.Statement, org.hibernate.engine.jdbc.spi.SqlExceptionHelper.WarningHandler)

// See HHH-9174.  Statement#getWarnings can be an expensive call for many JDBC libs.  Don't do it unless
// the log level would actually allow a warning to be logged.
if (LOG.isEnabled(Level.WARN)) {
    try {
        walkWarnings(statement.getWarnings(), handler);
    } catch (SQLException sqlException) {
        // workaround for WebLogic
        LOG.debug("could not log warnings", sqlException);
    }
}
java/hibernate/4.1411348369.txt.gz · 마지막으로 수정됨: 2014/09/22 10:12 저자 kwon37xi