스프링 DB 접근 방법
- 순수 JDBC 리포지토리 구현
- JDBC Template 사용
- JPA
- 스프링 데이터 JPA
1. 순수 JDBC 리포지토리 구현
- 이 부분을 정리해볼까 하다가 엄청 옛날 기술이고 앞으로 쓸 일도 많이 없을 거 같아서 생략하려고 합니다
- 예전에 JSP에서 썻던 기억은 있네요.
2. 기존 코드에서 DB만 변경
- 객체 지향의 다형성을 활용한 방법
- 개방-폐쇄 원칙 : 확장에는 열려있고, 수정, 변경에는 닫혀있다.
- 기존 코드 변경 없이 설정만 바꿔주어 DB를 변경할 수 있다.
3. 스프링 통합 테스트
- @SpringBootTest : 스프링 컨테이너와 함께 테스트를 실행한다.
- @Transactional : 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 롤백. DB에 데이터가 남지 않음. 테스트 하나하나마다 새로 시작하는 거라 서로서로 영향을 주지 않는다.
- 스프링 컨테이너가 없는 순수한 단위 테스트가 더 좋은 테스트일 확률이 높다.
- 스프링에 올려야하는 통합 테스트의 상황이면 테스트가 잘못되었을 가능성이 높다.
4. JDBC Template 사용
*실제 코드 중 일부*
- 순수 Jdbc와 동일한 환경설정
- JDBC API에서 본 반복 코드를 대부분 제거
- SQL은 직접 작성
5. JPA
- JPA는 기존의 반복 코드, 기본적인 SQL도 JPA가 직접 만들어서 실행
- SQL과 데이터 중심의 설계 -> 객체 중심의 설계로 패러다임을 전환을 할 수 있다
- 개발 생산성의 증가
사용 방법
- build.gradle에 추가
- application.properties에 추가
- 도메인 객체와 기본키에 애노테이션 추가
- 서비스에 트랜잭션 추가(JPA를 통한 모든 데이터 변경은 트랜잭션 안에서 실행)
- JPA 코드 구현 일부
6. 스프링 데이터 JPA
- 리포지토리에 구현클래스 없이 인터페이스만으로 개발할 수 있음
- 기존의 CRUD도 다 제공
- 더 높은 개발 생산성
- 스프링 데이터 JPA가 SpringDataJpaMemberRepository를 스프링 빈으로 자동 등록
- JpaRepository에 등록된 것들을 가져다 쓰는 것, 공통 클래스로 제공해준다
- 웬만큼 통용되는 기능들은 다 제공한다
- 메서드 이름만으로 조회 기능 등을 제공
- 페이징 자동 기능도 제공
이곳에 작성한 내용은 인프런에서 서비스하는 강의 중 김영한님의 스프링 강의를 정리하고 저의 언어로 기억하고 싶은 것을 정리한 내용입니다. 아래에 출처를 남겨두겠습니다.
https://www.inflearn.com/roadmaps/373
[초급~중급] 우아한형제들 기술이사 김영한의 스프링 완전 정복 - 인프런 | 로드맵
대세를 따르세요! 자바 스프링 베스트셀러 우형 최연소 기술이사에게 배우는 스프링 완전 정복 🚩 [사진] 오픈 3개월 만에 수강생 7000+명의 극찬 릴레이 ✨원리와 실무를 한방에, 김영한의 스프
www.inflearn.com
'Spring' 카테고리의 다른 글
[Spring] 스프링 AOP 개념, 실행 과정(프록시 생성, 의존관계 변경) (0) | 2022.01.20 |
---|---|
[Spring] 스프링 빈과 의존관계 (스프링 빈에 등록하는 방법, 컴포넌트 스캔, 자바 코드) (0) | 2022.01.18 |
[Spring] 스프링 기본적인 백엔드 개발 예제 및 테스트 (기본적인 구조, 간단한 테스트 케이스 작성) (0) | 2022.01.17 |
[Spring] 스프링 웹 개발의 기본 동작 원리, 개발방법 (정적, MVC, API) (0) | 2022.01.16 |