Spring

[Spring] 스프링 DB 접근 및 테스트, JPA (데이터베이스, 테스트코드, JPA, 스프링 데이터 JPA)

권락현 2022. 1. 20. 22:28


스프링 DB 접근 방법

  1. 순수 JDBC 리포지토리 구현
  2. JDBC Template 사용
  3. JPA
  4. 스프링 데이터 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