Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Jdbc활용하여 Application에서 DB로 넘겨보자. 본문

Spring Boot

Jdbc활용하여 Application에서 DB로 넘겨보자.

Seung__ 2021. 7. 23. 19:31

H2 DB 설치 및 사용 준비가 완료되었다.

 

이제 기존에 사용하던 memory에서 H2DB로 Repository를 변경해야 한다.

 

1. JdbcMemberRepository 작성


 

 JdbcMemberRepository는 MemberRepository의 구현체이다.

 

 Jdbc는 실제 DB에서 동작하는 쿼리를 직접 작성해야 한다....여기서는 생략..

 

DB에 붙으려면 DataSource가 필요하고, 스프링에서 주입을 받아야 한다.

 

이전에 DB사용을 위해 datasource를 지정해놨다. 해당 내용이 있으면 스프링에서 datasource를 만들어 놓는다.

spring.datasource.url= jdbc:h2:tcp://localhost/~/test

그리고 생성자를 통해 스플이에서 만들어 둔 datasource를 주입 받는다.

 

public class JdbcMemberRepository implements MemberRepository {
    private final DataSource dataSource;
    public JdbcMemberRepository(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    .
    .
    .
    .
}

 

2. 스프링 설정 변경하기!


 

여기가 가장 중요하다. 기존에 사용하던 repository를 바꿔치기 할 것이다.

@Configuration
public class SpringConfig {

    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository(){
       return new MemoryMemberRepository();
    }
}

SpringConfig에서 @Bean을 통해 직접 bean으로 등록할 수 있었다.

 

따라서 스프링이 시작하면 MemoryMemberRepository객체(MemberRepository 구현체)가 빈에 등록이 되었다.

 

이제 return되는 객체를 MemberRepository의 또 다른 구현체인 JdbcMemberRepository로 변경해주자.

 

 

그리고 JdbcMemberRepository에는 DataSource 주입이 필요하다.

 

SpringConfig 생성자를 통해 스프링 빈으로부터 DataSource를 주입을 받으면 된다.

@Configuration
public class SpringConfig {

    private DataSource dataSource;

    @Autowired
    public SpringConfig(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository(){

        //return new MemoryMemberRepository();
        return new JdbcMemberRepository(dataSource);
    }
}

 

!!!!별 다른 코드를 건들지 않고 DB를 바꿔치기 했다.

 

단순히 기존 Repository 인터페이스의 새로운 구현체 Repository를 만들고 SpringConfig에서 return만 바꿔줬다.

 

* 개방 폐쇄 원칙(OCP, Open-Closed Principle)

  확장에는 열려있고, 수정&변경에는 닫혀있다.

  인터페이스기반의 다형성개념을 활용하면

  이렇게 기능을 완전히 변경을 해도 애플리케이션 전체를 수정할 필요가 없다

  

오~객체지향~~

 

3.GitHub : 210722,jdbc, h2


 

 

GitHub - bsh6463/SpringBootClass

Contribute to bsh6463/SpringBootClass development by creating an account on GitHub.

github.com

 

'Spring Boot' 카테고리의 다른 글

JdbcTemplate  (0) 2021.07.23
스프링 통합 테스트  (0) 2021.07.23
H2 Database 설치 및 사용 법  (0) 2021.07.23
홈 화면 추가 & 웹 기능  (0) 2021.07.22
Spring Bean과 의존관계(JAVA로 직접 등록)  (0) 2021.07.22
Comments