[시작]
이전 다양한 db연결방법 (1편 HashMap)에 이어서 이번에는 Jdbc, JdbcTemplate, Jpa, Spring Data Jpa로 repository를 변경하는 적업을 알려드리려고 합니다.
이번 글에서 db를 정하고 변경하기 위하여 이전 글에서 HashMap을 사용해서 임시 저장을 하고 UserInfoRepository를 인터페이스로 구현하였습니다.
들어가기 전에 아래 설명에서는 전체적인 흐름 이해를 위하여 간단하게 구조나 부분 코드만 보여주기 때문에 전체 코드를 보시고 싶으시면 아래 github링크를 확인해 주세요.
[상세 설명]
본 설명에서는 각자 프로젝트를 설정한 이름과 경로가 다름으로 기본 경로를 baseDIR로 표시하겠습니다.
h2 database
먼저 db는 간단한 테스트에 좋은 h2를 사용하도록 하겠습니다.
다운로드 : https://www.h2database.com/html/download.html
사용법
- 윈도우 : h2.bat파일 실행
- 맥 : bin파일 안에서 ./h2.sh (chmod 755 h2.sh 로 권한을 설정해줘야 실행이 됩니다.)
저 같은 경우는 실습할 때만 켜 두기 때문에 screen으로 db를 올려둡니다. (나중에 간단한 스크린 사용법도 포스팅해야겠네요😅)
이렇게 실행시키고 나면 아래와 같이 화면이 나옵니다.
접속 후 USER_INFO테이블을 만들어줍니다.
이제 h2 database를 사용할 준비가 되었습니다.
build.gradle
h2와 jdbc, jpa등을 사용하기 위해 build.gradle에 다음 항목을 추가해 줍니다.
[Repository 변경]
이제 드디어 db를 연결해 보도록 하겠습니다. 먼저 요즘은 거의 사용하지 않지만 jdbc를 사용하는 방법부터 spring data jpa를 사용하는 방법까지 진행해 보겠습니다. repository 교체는 SpringConfig에서 스프링 빈만 교체해 주면서 각각 구현한 repository를 넣어주면 됩니다. (교체 작업은 같은 방법이기 때문에 한눈에 봐도 비교가 되는 jdbc와 spring data jpa로 교체하는 작업만 보여드리고 나머지는 코드로 올리겠습니다.)
JdbcUserInfoRepository
위 사진에서는 가입을 하는 부분과 db연결, db close 해 주는 부분만 보여드렸는데 벌써부터 코드가 너무 길다고 느껴지네요. (실제 전체 코드에서는 UserInfoRepository인터페이스에 있는 모든 기능을 구현해놨습니다.)
SpringConfig
이렇게 repository를 인터페이스로 구현하면 위와 같이 간단한 코드 수정 만으로 db에 접근하는 repository를 구현할 수 있습니다.
SpringDataJpaUserInfoRepository
정말 너무 놀랍지 않나요?!!🤭 (Spring Data Jpa 짱👍👍👍)
아까는 단순 가입만 해도 코드가 몇십줄은 된 거 같은데 Spring Data Jpa를 사용하면 이렇게 단 4줄로 전에 구현한 인터페이스의 모든 기능 구현이 끝났습니다. Spring Data Jpa는 이렇게 형식만 맞게 인터페이스를 정의해 주면 내부적으로 알아서 기능을 구현해 준다고 합니다.
SpringConfig
이전과 마찬가지로 간단히 SpringConfig만 수정하면 이제 모든 준비가 됐습니다.
[실행]
이렇게 실제 데이터를 database에 넣는 과정을 보여드렸습니다. 나머지 코드는 제 github에 올려놨습니다. 링크로 들어가시면 글에서 모두 보여드리지 못한 jdbcTemplate, jpa 코드로 확인하실 수 있습니다. 그대로 코드를 사용하시는 분들은 SpringConfig에 가시면 제가 각 repository별로 코드를 나누어서 주석처리해놨습니다. 하나씩 주석 제거하시면서 테스트해보시면 좋을 것 같습니다.
다음번에는 이렇게 만든 spring프로젝트를 테스트하는 방법과 빌드하는 방법에 대해서 올려드리겠습니다. 지금까지 긴 글 읽어주셔서 감사합니다. 🙇♂️
[출처]
제가 잘못 알고 있거나 잘못된 부분이 있을 경우 알려주시고 추가로 궁금한 점 있으신 분들도 댓글이나 메일 주시면 성실히 답변해 드리겠습니다.🧑🏻💻
감사합니다~😄
'Backend > spring' 카테고리의 다른 글
[ 스프링 ] 다양한 db 연결방법 ( 4편 AOP ) (0) | 2021.11.04 |
---|---|
[ 스프링 ] 다양한 db연결방법 ( 3편 test code, JUnit, AssertJ ) (0) | 2021.11.03 |
[ 스프링 ] 스프링 부트 시작 (0) | 2021.10.11 |
[ 스프링 ] 다양한 db연결방법 ( 1편 HashMap ) (2) | 2021.10.11 |