작성
·
4K
0
안녕하세요
자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 듣던 중
에러가 발생해서 질문 남깁니다.
우선 다운받은 h2버전과 pom.xml에 있는 버전은 동일합니다.(강의에서 유의하라고 해서 최근 버전인 2.1.14 버전을 사용했습니다.)
우선 JpaMain 코드는 아래와 같습니다.
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager entityManager = emf.createEntityManager();
entityManager.clear();
emf.close();
}
}
현재 만든 파일은 JpaMain을 포함하여
pom.xml, persistence.xml 이렇게 3가지 입니다.
그런데 JpaMain 클래스를 실행시면 다음과 같은 에러가 발생합니다.
우선 에러는 크게 4가지입니다.
Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Unsupported database file version or invalid file header in file "C:/Users/kim/test.mv.db" [90048-214]
Caused by: org.h2.mvstore.MVStoreException: The write format 1 is smaller than the supported format 2 [2.1.214/5]
느낌상 기존에 h2 db를 사용한거랑 무언가 충돌이 일어난 느낌입니다..
에러 들을 검색해보면 hibernate 버전이나 h2database 버전문제로 확인이 되는데 저는 버전에는 문제가 없는 것으로 보입니다. 어디가 문제일까요?
pom.xml은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jpa-basic</groupId>
<artifactId>ex1-hello-jpa</artifactId>
<version>1.0.0</version>
<dependencies>
<!-- JPA 하이버네이트 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.10.Final</version>
</dependency>
<!-- H2 데이터베이스 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.214</version>
</dependency>
</dependencies>
</project>
persistence.xml은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="hello">
<properties>
<!-- 필수 속성 -->
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<!-- 옵션 -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
<!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
</properties>
</persistence-unit>
</persistence>
당연히 maven 업데이트는 했습니다.
답변 감사합니다.
참고로 저는 h2 버전을 홈페이지에 있는 버전인 2.1.214 버전을 다운 받았고 persistence.xml에도 2.1.214버전을 입력했습니다. 굳이 1.4.200 버전을 다운 받아야하는 이유가 있나요?
일단 그러면 h2를 다운로드받은
bin 폴더가 있는 C:\Program Files (x86)\H2 폴더를 삭제하고
"C:/Users/kim/test.mv.db" 를 삭제하고 다시
H2를 설치하면 될까요?
그러면 걸리는 것이기존에 H2 파일을 사용하고 있던 프로젝트들은 실행이 안될것 같은데..
그점은 어떻게.. 하면 좋을까요?
참고로 이전에 프로젝트할 떄는 H2 홈페이지가서 설치를 안하고 그냥 gradle에서 추가를 해서 사용을 했었습니다.