์Šคํ”„๋ง ์ž…๋ฌธ - (14) ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  / ์ˆœ์ˆ˜ Jdbc

2023. 1. 26. 16:17ยทSpring/Spring ์ž…๋ฌธ

์ด์ „์— ์ด์šฉํ•ด์™”๋˜ ๋ฐ์ดํ„ฐ๋“ค์€

๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ๊ป๋‹ค ์ผœ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์›Œ์ง„๋‹ค

 

๋ฐ์ดํ„ฐ๋“ค์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ด์„œ ๊ด€๋ฆฌํ•ด๋ณด์ž

 

 

H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์น˜

  1. ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜
  2. ๊ถŒํ•œ ์ฃผ๊ธฐ: chmod 755 h2.sh
  3. ์‹คํ–‰: ./h2.sh
  4. jdbc:h2:~/test (์ตœ์ดˆ ํ•œ๋ฒˆ)
  5. ~/test.mv.db ํŒŒ์ผ ์ƒ์„ฑ ํ™•์ธ
  6. ์ดํ›„๋ถ€ํ„ฐ๋Š” 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
'Spring/Spring ์ž…๋ฌธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (16) ์Šคํ”„๋ง JdbcTemplate
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (15) ์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (13) ํšŒ์› ์›น ๊ธฐ๋Šฅ
  • ์Šคํ”„๋ง ์ž…๋ฌธ - (12) ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ •
hello_u
hello_u
  • hello_u
    ๐Ÿ˜œ
    hello_u
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿ˜œ (345)
      • Hardware (2)
        • BMC (2)
      • Spring (109)
        • Spring ์ž…๋ฌธ (20)
        • Spring ๊ธฐ๋ณธ (27)
        • Spring MVC (18)
        • Spring DB (22)
        • Spring JPA ๊ธฐ๋ณธ (16)
        • Spring JPA ํ™œ์šฉ (6)
      • Develop (27)
        • DB (8)
        • JAVA (4)
        • Web (2)
        • Python (7)
        • OSS (2)
        • Git (2)
        • API (2)
      • Algorithm (155)
        • CodeUp ๊ธฐ์ดˆ (44)
        • ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (64)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (4)
        • SWEA (30)
        • Softeer (10)
        • BOJ (2)
      • CS (9)
        • ์ปดํ“จํ„ฐ์ผ๋ฐ˜ (3)
        • ์šด์˜์ฒด์ œ (3)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
        • ์ •๋ณดํ†ต์‹  (1)
        • ์ž๋ฃŒ๊ตฌ์กฐ (1)
        • ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™ (1)
        • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (0)
        • ์ตœ์‹  ๋””์ง€ํ„ธ, ์ผ๋ฐ˜์ƒ์‹ (0)
      • ์ž๊ฒฉ์ฆ (41)
        • ์ •๋ณด๋ณด์•ˆ๊ธฐ์‚ฌ (9)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (22)
        • ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 1๊ธ‰ (3)
        • SQLD (7)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
hello_u
์Šคํ”„๋ง ์ž…๋ฌธ - (14) ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  / ์ˆœ์ˆ˜ Jdbc
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”