
jdbc:h2:~/jpashopp;AUTO_SERVER=TRUE 를 입력했더니 해결되었어. 이것의 의미가 뭐야?
해결됐다니 다행이야.
AUTO_SERVER=TRUE는 H2의 자동 서버 모드(Auto Mixed Mode) 를 활성화하는 옵션이야.
네가 입력한 URL:
jdbc:h2:~/jpashopp;AUTO_SERVER=TRUE
의 의미를 분해하면:
1. jdbc:h2:~/jpashopp
~
=
C:\Users\dhfle
따라서 실제 DB 파일은
C:\Users\dhfle\jpashopp.mv.db
에 생성된다.
2. AUTO_SERVER=TRUE
원래 H2는 두 가지 방식으로 사용할 수 있다.
Embedded Mode
프로그램(JPA)
↓
jpashopp.mv.db
현재 실행 중인 프로그램만 DB 파일을 사용할 수 있다.
따라서 JPA 프로그램이 DB를 잡고 있으면 H2 Console은 접근하지 못한다.
Server Mode
JPA
↓
H2 Server
↑
H2 Console
모든 클라이언트가 H2 서버를 통해 접속한다.
AUTO_SERVER=TRUE가 하는 일
처음 DB를 여는 프로세스가 자동으로 서버 역할도 수행한다.
즉
JPA 실행
↓
DB 파일 생성
↓
자동으로 H2 서버도 생성
그래서 나중에
H2 Console
에서도 같은 DB에 접속할 수 있게 된다.
왜 네 경우에 해결되었을까?
원래는
jdbc:h2:~/jpashopp
로 접속했을 때
Database not found
가 발생했는데,
AUTO_SERVER=TRUE
를 붙이자 H2가
C:\Users\dhfle\jpashopp.mv.db
파일을 생성하면서 자동 서버도 띄운 것이다.
그래서 에러가 사라진 것이다.
김영한 JPA 강의에서는 보통
처음에는
jdbc:h2:~/jpashop
로 접속해서 DB를 생성하고,
그 다음부터
jdbc:h2:tcp://localhost/~/jpashop
를 사용한다.
하지만 H2 2.x 버전에서는 정책이 좀 더 엄격해져서 AUTO_SERVER=TRUE를 붙여야 잘 동작하는 경우가 많다.
현재 사용 중인 H2 버전이 2.2.224인데, 이 버전은 김영한 강의에서 사용한 H2 1.4.x 버전과 동작 방식이 조금 달라서 강의를 그대로 따라 하면 네가 본 것 같은 문제를 자주 만나게 된다.
'Spring&IntelliJ' 카테고리의 다른 글
| @Inheritance에 대해서 (3가지 전략) (0) | 2026.06.16 |
|---|---|
| cascade = CascadeType.ALL은 어떨때 주로 쓰이고 왜 쓰여? (0) | 2026.06.16 |
| JPA 지연로딩과 프록시객체 (0) | 2026.06.02 |
| 1. 쓰기 지연과 지연 로딩에 대해서, 2.로우(ROW)락과 쓰기지연에 대해서 (0) | 2026.06.02 |
| JPA 2-1강 JPA 내부 동작 방식, JPA 2-2강 영속성 컨텍스트의 이해(1), JPA 2-3강 영속성 컨텍스트의 이해(2) (0) | 2026.05.31 |