๋ค์ด๊ฐ๊ธฐ ์ ์
์ฐ๋ฆฌ๋ ์ด์ ํฌ์คํ ์์ ํ์ ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์
์๋ฒ๋ฅผ ๊ป๋ค ์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ๋ชจ๋ ์ฌ๋ผ์ก๋ค.
์ค๋ฌด์์๋ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํตํด ์ ์ฅํ๊ณ ๊ด๋ฆฌํด์ผ ํ๋ค.
์ด๋ฅผ ์ํด ์ฐ์ ๊ฐ๋ณ๊ณ ๊ฐ๋จํ H2 ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ค์นํ๊ณ ,
๋ฐ์ดํฐ๋ฒ ์ด์ค SQL์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ DB๋ฅผ ์ฐ๊ฒฐํด ๋ณด์.
์ฐ๊ฒฐํ ๋ ํ์ํ ๊ฒ์ด ๋ฐ๋ก Jdbc๋ผ๋ ๊ธฐ์ ์ด๋ฉฐ,
๋จผ์ ์ค๋ ์ ์ ๊ฐ๋ฐ์๋ค์ด ์ด๋ป๊ฒ ๊ฐ๋ฐํ๋์ง ์์ํ Jdbc๋ก ๊ฒฝํ์ ํด ๋ณด๊ณ
์ค๋ณต์ ์ ๊ฑฐํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ DB๋ก SQL์ ํธํ๊ฒ ๋ ๋ฆด ์ ์๋ ์คํ๋ง Jdbc Template์ ์ฌ์ฉํ ์์ ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๋์๊ฐ์ SQL์กฐ์ฐจ ๊ฐ๋ฐ์๋ค์ด ์ง์ ์ง์ง ์๊ณ
JPA๋ผ๋ ๊ธฐ์ ์ ํตํด ๋ฑ๋ก/์์ /์ญ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆด ์ ์๋ค.
(๊ฐ์ฒด๋ฅผ ์ฟผ๋ฆฌ ์์ด ๋ฐ๋ก DB์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.)
์ด JPA๋ฅผ ์คํ๋ง์์ ์์ฃผ ํธ๋ฆฌํ๊ฒ ์ธ ์ ์๋๋ก ๊ฐ์ผ ๊ธฐ์ ์ด ์คํ๋ง ๋ฐ์ดํฐ JPA์ด๋ค.
์คํ๋ง ๋ฐ์ดํฐ JPA๊น์ง ์ฌ์ฉํด๋ณด๋ฉด Chapter 6์ด ๋ง๋ฌด๋ฆฌ ๋๋ค.
H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์น
# ์ค์น
๋ฐ๋์ ์๋ ๋งํฌ์์ 1.4.200 ๋ฒ์ ์ค์นํ๊ธฐ
(์ต๊ทผ์ ๋์จ 2.0.206 ๋ฒ์ ์ ์ค์นํ๋ฉด ์ผ๋ถ ๊ธฐ๋ฅ์ด ์ ์ ๋์ํ์ง ์์)
https://www.h2database.com/html/download-archive.html
๋ง์ฝ ์ด๋ฏธ ์ค์นํ๊ณ ์คํ๊น์ง ํ๋ค๋ฉด ๋ค์ ์ค์นํ ์ดํ์ ~/test.mv.db ํ์ผ์ ๊ผญ ์ญ์ ํด์ผ ํ๋ค.
> ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด์ ์ ์๋์ง ์์.
> General error: "The write format 1 is smaller than the supported format 2 [2.0.206/5]" [50000-202] HY000/50000
# ์ค์น ์๋ฃ ํ
> ์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด ํฐ๋ฏธ๋์ ์ด์ด h2 ํด๋์ bin์ผ๋ก ๋ค์ด๊ฐ๋ค.
$ cd downloads // ๊ฐ์ ํ์ผ์ด ๋ค์ด๋ก๋ ๋ ์์น ์
๋ ฅ
$ cd h2
$ cd bin
> ๋งฅ ์ฌ์ฉ์๋ ๊ถํ์ ๋ถ์ฌํด์ค๋ค. (์๋์ฐ๋ X)
$ chmod 755 h2.sh
> ์คํ
$ ./h2.sh
// ์๋์ฐ ์ฌ์ฉ์๋ h2.bat
๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋ฌ๋ค.
์ต์ด ์ ์(JDBC URL)์ jdbc:h2:~/test
์ดํ๋ถํฐ๋ jdbc:h2:tcp://localhost/~/test๋ก ์ ์
์ฐ๊ฒฐ์ ๋๋ฅด๊ณ ์๋ ํ๋ฉด์ด ๋จ๋ฉด ์ฑ๊ณต.
ํ์์ ls ๋ช ๋ น์ด๋ฅผ ํตํด test.mv.db๊ฐ ์์ฑ๋์๋์ง ํ์ธ
(ํน์ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด rm test.mv.db ๋ช ๋ น์ด๋ฅผ ํตํด ์ญ์ ํ ์ค์น๋ถํฐ ๋ค์ ์คํ)
# ํ ์ด๋ธ ์์ฑํ๊ธฐ
ํ ์ด๋ธ ๊ด๋ฆฌ๋ฅผ ์ํด ํ๋ก์ ํธ ๋ฃจํธ์ sql/ddl.sql ํ์ผ์ ์์ฑ
H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํด์ member ํ ์ด๋ธ ์์ฑ
create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key (id)
);
genertated by default as identity : ๊ฐ์ ์ธํ ํ์ง ์๊ณ insertํ๋ฉด db๊ฐ ์๋์ผ๋ก id ๊ฐ์ ์ฑ์์ค
# H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ ์์ฑ๋์ง ์์ ๋
๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋์ค๋ฉฐ H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ ์์ฑ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
ํด๊ฒฐ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
# ํ ์คํธ ํด๋ณด๊ธฐ
insert into member(name) values('spring')
insert into member(name) values('spring2')
spring, spring2 ํ์์ด ์ ์์ ์ผ๋ก ์์ฑ๋์๋ค.
๋ด์ฉ ๋ฐ ์ด๋ฏธ์ง ์ถ์ฒ : ๊น์ํ์ ์คํ๋ง ์ ๋ฌธ