728x90
Spring*Maven Project에서 JPA를 사용하기 위해 persistence.xml 파일을 만들었는데 두 가지 에러 상황이 발생했다.
1. Version Error
오류 log : Caused by: javax.persistence.PersistenceException: Unrecognized persistence.xml version [2.2]
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
: 자동으로 생성됐을 때 2.2여서 놔뒀던건데, version을 2.1로 맞춰주어서 해결했다.
2. org.h2.Driver 로드 Error
오류 log : Cannot resolve class 'org.h2.Driver.class'
Error 이유 : pom.xml의 com.h2database의 scope가 test로 되어있었기 때문에 발생했던 일이다.
Maven Dependency에서 Scope 옵션은 해당 의존성을 언제 어떻게 Class Path에 넣어서 사용할 것인가를 정의하는 값이다.
Scope type에는 네가지가 있는데, Compile, Runtime, Provided, Test가 존재한다.
Compile
- Compile 시점에 필요하고, 기본값(=Default)이다.
- 프로젝트의 모든 Class Path에 추가된다.
Runtime
- Runtime 시점에 필요하다. Compile 시점에는 필요가 없지만, 실행 시점에는 필요하다.
- Runtime, 테스트 시 Class Path에 추가 되지만 Compile시에는 추가 되지 않는다.
- ex) JDBC 드라이버
Provided
- Compile 시점에 필요하다.
- Scope 값을 provided로 설정한 의존성에 대해서는 Runtime 시점에 JDK 혹은 컨테이너가 제공한다.
- Wep Application 개발 시 Servlet API or Java EE API들은 provided Scope으로 지정해야한다. (톰캣과 같은 컨테이너가 제공해주기 때문)
- ex) Servlet API
Test
- Compile 시점에 필요하고, 배포때는 제외된다.
- ex) JUnit
내가 scope를 test로 해놓았기 때문에 생긴 에러라고 추측한다.
JPA 잘하고싶다. 그럼 bye!
728x90
'Database > JPA' 카테고리의 다른 글
[JPA] 연관 관계 (0) | 2022.07.14 |
---|
댓글