하이버네이트를 H2 DB에 연동하여 사용하려고 프로젝트를 세팅하고 쿼리를 수행하려고 하니 다음과 같은 첫번째 예외가 발생했습니다.

첫번째 예외
Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory
...생략...
Caused by: org.hibernate.exception.JDBCConnectionException: Unable to set auto-commit (false)
...생략...
Caused by: org.h2.jdbc.JdbcSQLException: Connection is broken: "unexpected status 16777216" [90067-187]


원인1
예외를 살펴보니 실질적인 원인은 마지막 줄의 Caused by에 h2.jdbc 예외인 Connection is broken: "unexpected status 16777216" [90067-187] 부분입니다. 의외로 원인을 빨리 발견했는데, h2 db 버전과 h2의 JDBC 버전이 맞지 않았던 것입니다.


해결1
메이븐 pom.xml 설정을 통해 jdbc 버전을 높여주니 예외가 해결되었습니다. 그러나!!




두번째 예외가 발생합니다.
Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory
...생략...
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.h2.Driver]
...생략...
Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver


원인2
두번째 원인으로는 H2 JDBC Driver를 load 하지 못하는 문제입니다. 마지막 줄의 를 java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver 통해 확인 가능합니다.


해결2
이상하게 pom.xml을 통해 설정해주었는데 불구하고 인식하지 못했습니다. 이클립스 개발환경을 기준으로 설명하자면 다음과 같습니다.

자신의 h2 db가 설치된 경로의 bin 디렉터리를 보면 h2 db .jar 파일이 존재합니다.



프로젝트를 선택 후 Alt + Enter 또는 마우스 우클릭 후 properties 클릭합니다.




프로젝트 설정에서 Java Build Path -> Libraries -> Add External JARs...



h2 .jar 선택 후 열기




적용 후 닫으면 Driver가 인식됩니다.



아래와 같이 보이면 됩니다.

-

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!