H2 Database 연결이 안됩니다.
86
35 asked
<?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="jakarta.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="jakarta.persistence.jdbc.username" value="sa"/>
<property name="jakarta.persistence.jdbc.password" value=""/>
<property name="jakarta.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>
<?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-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<!-- 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>1.4.199</version>
</dependency>
</dependencies>
</project>
package hellojpa;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
em.close();
emf.close();
}
}


H2 Database 연결이 안되어서 오류가 발생하는데 뭐가 문제인지 알려줄 수 있나요?
Answer 2
0
안녕하세요, 인프런 AI 인턴입니다.
lgh8079님께서 H2 Database 연결 문제로 어려움을 겪고 계신 것 같습니다. 제공해주신 설정 파일과 오류 메시지를 기반으로 몇 가지 가능성 있는 해결 방법을 안내드리겠습니다.
Database 파일 생성: 제공된 오류 메시지에 따르면 “Database not found”라는 메시지가 나타나고 있습니다. 이는 해당 경로(C:/Users/User/test)에 데이터베이스 파일이 없음을 의미합니다. 이 경우, H2 콘솔을 통해 데이터베이스를 먼저 생성해야 합니다. H2 Database는 기본적으로 파일을 생성해 주지만, TCP 모드에서는 연결하는 쪽에서 데이터베이스 파일을 미리 생성해준 상태여야 합니다.
H2 데이터베이스 URL 확인:
jdbc:h2:tcp://localhost/~/testURL은 H2 TCP 모드로 연결을 시도하고 있습니다. 해당 URL에 맞는 데이터베이스가 있는지 확인해주시기 바랍니다. 경우에 따라 로컬 파일로 데이터베이스를 사용하고자 하면jdbc:h2:~/test와 같은 로컬 경로를 사용할 수도 있습니다. 경로를 정확히 확인 후, 파일이 존재해야 합니다.버전 확인 및 호환성 문제: 사용 중인 H2 Database 버전(1.4.199)과 Hibernate의 호환성을 체크하는 것도 중요합니다. H2 Database의 새로운 버전이 나와 있다면, 업그레이드 후 다시 시도해 보시는 것도 방법입니다.
Persistence 설정 확인:
persistence.xml파일에서 네임스페이스와 구성 요소가 올바르게 설정되어 있는지 다시 확인해 보세요.javax.persistence.jdbc.username설정은jakarta.persistence.jdbc.username와 같이 정확하게 설정되어야 합니다.
다음과 유사한 문제가 있는 다른 질문과 답변들을 통해 얻을 수 있는 자세한 정보들을 제공합니다:
- “자바 ORM 표준 JPA 프로그래밍 - 기본편 H2 Console연결이 되지 않습니다.”에서는 H2 데이터베이스 파일이 존재하지 않아서 발생한 오류에 대한 해결 방법을 제공합니다.
- “h2 커넥션 안되는 에러 질문이요”에서는 H2 데이터베이스 버전 호환성 문제와 관련된 솔루션을 다룹니다.
이 외에도, 문제가 지속되면 새로운 데이터베이스 파일을 생성하거나, 다른 저장 경로를 지정하는 방법도 있음을 참고하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식 공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
실무 조언 관련 질문입니다.
0
36
1
H2데이터베이스 파일 생성
0
45
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
47
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
45
1
JPQL 메소드와 락
0
47
1
Delivery @OneToOne
0
54
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
84
2
UnsupportedOperationException 발생
0
80
3
연관관계 매핑 질문드립니다.
0
77
2
h2데이터베이스 실행오류
0
103
2
persistence.xml
0
100
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
74
1
영속성 컨텍스트
0
59
1
JPA 프록시
0
86
1
Native Query와 MyBatis
0
60
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
81
1
임베디드 타입 예시 코드 관련 질문
0
110
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
89
3
인텔리제이 패키지 커서 단축키 질문
0
100
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
133
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
67
1
임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.
0
95
1
데이터베이스가 초기화되는 것 같아요
1
172
2
getReference()하면 영속성 컨텍스트에 속하게 되나요?
0
74
1

