본문 바로가기
개발자 공부 - 인프런 온라인 강의/스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[섹션 6. 스프링 DB 접근 기술] 순수 JDBC / 인프런 김영한 스프링 입문

by easpop 2023. 2. 1.
728x90
반응형

이번 시간에는 스프링과 DB를 연결하는 작업을 하였다~~

이전 시간과 달리, 애플리케이션에서 DB에 연동을 해서 애플리케이션에서 저장하면 메모리에 저장되는게 아닌

DB에 insert 쿼리를 날리고, select 쿼리를 날려서 DB에 넣고 빼는것을 할 수 있도록 세팅하였다.

 

 

과거의 JDBC 세팅하는 법을 소개해주셨는데 그냥 참고용으로만 들으면 될 듯!

먼저 build.gradle 파일에 라이브러리 디펜던시를 직접 주입해주었다.

자바는 DB랑 연결을 위해서는 JDBC 드라이버가 반드시 필요하다.

DB랑 붙을때, DB가 제공하는 클라이언트가 필요하기 때문에,

그래서 19번째 줄에 h2database 클라이언트를 넣어주었음.

application.properties에 DB의 접속정보를 넣어준다. (요즘에는 스프링 부트가 자동으로 해준다!ㅋㅋㅋ)

URL을 넣어주고, 사용할 H2 DB의 드라이버 이름을 넣어주고, username까지 넣어주었다~~

 

인터페이스인 memberRepository의 구현체를 생성하기 위해 JdbcMemberRepository를 만들어준다.

회원 저장 역할은 MemberRepository가 하지만, 구현을 메모리에 할지 아니면 DB랑 연동해서 JDBC로 할지,

이 차이점이 있음!

DB에 붙기 위해서는 DataSource가 필요함.

DataSource 메소드를 호출해주고 생성자를 통해서 주입받는다.

 

dataSource.getConnection을 통해서 DB Connection을 가지고 온다.

반응형

SpringConfig에서

DataSource를 호출하고 생성자를 통해서 dataSource를 주입받는다~~

그리고 memberRepository 메소드의 리턴을 MemoryMemberRepository가 아닌,

JdbcMemberRepository로 바꾸고 파라미터는 dataSource를 받는다.

 

서버를 실행해주고 회원 목록을 클릭했을때,

DB에서 정상적으로 가져오는 것을 확인할 수 있다~~

 

새로운 이름을 등록하고 회원 목록에 저장이 되는걸 확인할 수 있고

마찬가지로 DB 콘솔에 찍어봐도 조회가 정상적으로 되는것을 확인할 수 있다~~

구현 클래스의 의존도를 보면,

 

그림에는 없지만 MemberService는 인터페이스인 MemberRepository를 의존하고 있다.

MemberRepository는 구현체로 MemoryMemberRepository와 JdbcMemberRepository가 있다~~

 

스프링 컨테이너에서 설정을 기존에는 MemoryMemberRepository를 스프링 빈에 등록했다면,

memory에 저장하는 리포지토리가 아닌 DB에 연결하기 위해 새로운 JdbcMemberRepository를 등록한다.

그렇게 수정만 하면 나머지는 손댈게 없음!

그렇게 되면 구현체만 바뀌고 그대로 작동한다~~

 

이렇게 스프링을 쓰는 이유는 뭘까?

객체지향형으로 설계를 하게 되면 좋은 점이 다형성 측면에서 유리하다!

쉽게 말해, 인터페이스를 두고 구현체를 바꿔 끼우기가 용이하다는 장점이 있다~~

스프링은 이런 것을 용이하게 하도록 스프링 컨테이너가 지원을 해준다.

 

기존의 코드는 수정없이, 애플리케이션을 설정하는 코드 (예제의 springConfig 파일),

즉, 어셈블리 코드(애플리케이션을 조립하는 코드)만 수정하면 실제 애플리케이션 관련 코드는 건드리지 않아도 된다!

728x90
반응형

댓글