SpringBoot_웹 MVC, DB 접근 기술 4

5w31892p·2023년 1월 13일
0

Spring

목록 보기
28/30

:: 웹 MVC 개발

  • 컨트롤러가 정적컨텐츠파일보다 우선순위가 높다.

:: 회원 등록 기능

:: 회원 조회 기능

  • 모델이 데이터 담을 때에는 addAttribute() 사용
    • Model addAttribute(String name, Object value)
  • ${aaa} : aaa 안의 값을 꺼내는 것
  • th:each : loop 돌기

:: DB 접근 기술

:: h2 DataBase

h2 설치

  1. 권한주기 (맥만) : chmod 755 h2.sh
  2. DB 파일 생성 : jdbc:h2:~/test
    ~/test.mv.db 파일 생성되었는지 확인
    윈도우 기준 C드라이브 -> 사용자 -> 사용자 이름
  3. 생성되었다면 후부턴 jdbc:h2:tcp://localhost/~/test 로 접속

::순수 JDBC

  • JDBC API로 직접 코딩 하는 것은 오래 전 이야기이다.
  • 그러므로 정신건강을 위해 편하게 보고 필요할 때 찾아서 보기

JDBC 만든 후 변화

  • 개방-폐쇄 원칙(OCP, Open-Closed Principle)
    • 확장에는 열려있고, 수정, 변경에는 닫혀있다.
  • SpringConfig 파일에서 MemoryMemberRepository에서 JdbcMemberRepository로 수정만 하면 다른 파일 수정 없음
  • 이처럼 스프링 DI 사용하면 기존 코드를 전혀 손대지 않고, 설정만으로 구현 클래스 변경 가능

:: 스프링 통합 테스트

Code

  • 스프링 컨테이너와 db까지 연결한 통합 테스트
  • h2에서 저장된 db를 delete from member 으로 지우고 시작
  • @Transactional 없이 진행시 db에 그대로 저장이 되어있음
  • @SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행
  • @Transactional
    • 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후에 항상 롤백
    • DB에 데이터가 남지 않으므로 다음 테스트에 영향 X
  • 단위 테스트 : 자바코드로 하는 테스트
  • 통합 테스트 : 스프링 컨테이너까지 올려서 하는 테스트

:: @Transactional

  • test시 db에 데이터 다 넣고, test가 끝나면 db를 모두 롤백시킴 (반영하지 않음)

:: 스프링 jdbcTemplate

Code

  • 순수 jdbc와 동일한 환경설정
  • JDBC API에서 본 반복 코드를 제거
  • 하지만 sql 직접 작성
  • test코드는 중요하다.

0개의 댓글