์ด์ ์ ์ด์ฉํด์๋ ๋ฐ์ดํฐ๋ค์
๋ฉ๋ชจ๋ฆฌ์ ์๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ฅผ ๋ค์ ๊ป๋ค ์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ง์์ง๋ค
๋ฐ์ดํฐ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํด์ ๊ด๋ฆฌํด๋ณด์
H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์น
- ๋ค์ด๋ก๋ ๋ฐ ์ค์น
- ๊ถํ ์ฃผ๊ธฐ: chmod 755 h2.sh
- ์คํ: ./h2.sh
- jdbc:h2:~/test (์ต์ด ํ๋ฒ)
- ~/test.mv.db ํ์ผ ์์ฑ ํ์ธ
- ์ดํ๋ถํฐ๋ jdbc:h2:tcp://localhost/~/test ์ด๋ ๊ฒ ์ ์
ํ ์ด๋ธ ์์ฑํ๊ธฐ
ํ ์ด๋ธ ๊ด๋ฆฌ๋ฅผ ์ํด ํ๋ก์ ํธ ๋ฃจํธ์ sql/ddl.sql ํ์ผ์ ์์ฑ
drop table if exists member CASCADE;
create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key (id)
);
์์ Jdbc
Jdbc ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํ
์ฃผ์! ์ด๋ ๊ฒ JDBC API๋ก ์ง์ ์ฝ๋ฉํ๋ ๊ฒ์ 20๋
์ ์ด์ผ๊ธฐ์ด๋ค. ๋ฐ๋ผ์ ๊ณ ๋ ๊ฐ๋ฐ์๋ค์ด ์ด๋ ๊ฒ
๊ณ ์ํ๊ณ ์ด์๊ตฌ๋ ์๊ฐํ๊ณ , ์ ์ ๊ฑด๊ฐ์ ์ํด ์ฐธ๊ณ ๋ง ํ๊ณ ๋์ด๊ฐ์.
build.gradle ํ์ผ์ jdbc, h2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ
์คํ๋ง ๋ถํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ค์ ์ถ๊ฐ
์คํ๋ง์ด DB์ ์ฐ๊ฒฐํ๋ ์์ ์ํ
resources/application.properties
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
ํ์์ ์ ์ฅํ๋ ์ญํ - MemberRepository ( ์ธํฐํ์ด์ค )
๊ตฌํ์ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ค -> MemoryMemberRepository
DB์ ์ฐ๋ํด์ Jdbc ๋ก ๊ตฌํ -> JdbcMemberRepository
public class JdbcMemberRepository implements MemberRepository
DB์ ์ ๊ทผํ๋ ค๋ฉด DataSource ๊ฐ ํ์ํ๋ค
private DataSource dataSource;
public JdbcMemberRepository(DataSource dataSource) {
this.dataSource = dataSource;
}
@Configuration // ์คํ๋ง์ด ๋ฐ ๋ configuration ์ ์ฝ๊ณ
public class SpringConfig {
private final DataSource dataSource;
public SpringConfig(DataSource dataSource) {
this.dataSource = dataSource;
}
@Bean // ์คํ๋ง ๋น์ ๋ฑ๋กํ ๊ฑฐ์ผ ๋ผ๋ ์๋ฏธ
public MemberRepository memberRepository() {
// return new MemoryMemberRepository();
return new JdbcMemberRepository(dataSource);
}
DataSource๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์ ํ๋ํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ค.
์คํ๋ง ๋ถํธ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก DataSource๋ฅผ ์์ฑํ๊ณ ์คํ๋ง ๋น์ผ๋ก ๋ง๋ค์ด๋๋ค.
๊ทธ๋์ DI๋ฅผ ๋ฐ์ ์ ์๋ค.
๊ฐ๋ฐฉ-ํ์ ์์น(OCP, Open-Closed Principle) ํ์ฅ์๋ ์ด๋ ค์๊ณ , ์์ , ๋ณ๊ฒฝ์๋ ๋ซํ์๋ค.
์คํ๋ง์ DI (Dependencies Injection)์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด ์ฝ๋๋ฅผ ์ ํ ์๋์ง ์๊ณ , ์ค์ ๋ง์ผ๋ก ๊ตฌํ ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
ํ์์ ๋ฑ๋กํ๊ณ DB์ ๊ฒฐ๊ณผ๊ฐ ์ ์
๋ ฅ๋๋์ง ํ์ธํ์.
๋ฐ์ดํฐ๋ฅผ DB์ ์ ์ฅํ๋ฏ๋ก ์คํ๋ง ์๋ฒ๋ฅผ ๋ค์ ์คํํด๋ ๋ฐ์ดํฐ๊ฐ ์์ ํ๊ฒ ์ ์ฅ๋๋ค.
'Spring > Spring ์ ๋ฌธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์ ๋ฌธ - (16) ์คํ๋ง JdbcTemplate (0) | 2023.01.27 |
---|---|
์คํ๋ง ์ ๋ฌธ - (15) ์คํ๋ง ํตํฉ ํ ์คํธ (0) | 2023.01.27 |
์คํ๋ง ์ ๋ฌธ - (13) ํ์ ์น ๊ธฐ๋ฅ (0) | 2023.01.22 |
์คํ๋ง ์ ๋ฌธ - (12) ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์ (0) | 2023.01.21 |
์คํ๋ง ์ ๋ฌธ - (11) ํ์ ์๋น์ค ํ ์คํธ (0) | 2023.01.20 |