스프링부트3 - 코딩자율학습스터디

김희진·2024년 6월 23일
0

스프링 부트와 JPA 기초

1. 스프링 부트 소개

스프링 부트란?

  • 스프링 프레임워크 기반의 프로젝트 생성 도구
  • 간편한 셋업과 최소한의 설정으로 빠른 개발 가능
  • 임베디드 서버(예: 톰캣) 내장으로 별도 설치 없이 실행 가능
  • 스타터 의존성을 통해 필요한 라이브러리 자동 설정

스프링 부트 프로젝트 생성

버전 접미사

  • SNAPSHOT: 현재 테스트 단계
  • MX: 주요 기능 및 버그 수정 중인 단계 (M1, M2...)
  • RC: 전반적 기능과 버그가 모두 수정된 최종 배포 전 단계
  • GA: 최종 배포 단계 (대부분 기능과 버그들이 안정화된 단계)

src 디렉터리 구조

  • main/java: 자바 코드 저장 공간
  • resources: 외부 코드 저장 공간

2. 머스테치 (Mustache)

  • 뷰에서 사용하는 템플릿 엔진
  • 기본 위치: src/main/resources/templates
  • 컨트롤러에서 mustache 파일명 반환 시 서버가 해당 파일을 찾아 웹 브라우저로 전송

3. MVC 패턴

  • 컨트롤러: 클라이언트 요청에 따른 서버 처리 담당
  • 뷰: 화면 출력 담당, 실제로 보이는 부분 (예: JSP, Thymeleaf, Mustache)
  • 모델: 데이터 관리 담당

컨트롤러

  • @Controller 어노테이션: 컨트롤러 클래스 지정
  • @GetMapping 어노테이션: 특정 URL 요청 시 메서드 실행

모델

  • 컨트롤러 메서드의 매개변수로 받음
  • addAttribute() 메서드로 변수 등록

4. JPA (Java Persistence API)

  • 자바 언어로 DB에 명령을 내리는 도구
  • 데이터를 객체 지향적으로 관리 가능

JPA 구성

  1. 엔터티 (Entity): 자바 객체를 DB가 이해할 수 있는 형태로 변환, 테이블 생성의 기반
  2. 리포지토리 (Repository): 엔터티의 DB 저장 및 관리를 위한 인터페이스

주요 어노테이션

  • @Entity: 클래스를 엔터티로 지정
  • @Column: DTO(Data Transfer Object)에서 컬럼 속성 지정

CrudRepository

  • CrudRepository<T, ID>: 기본적인 CRUD 연산 제공
    • T: 엔터티 클래스 타입
    • ID: 엔터티의 기본키(primary key) 타입

5. DTO와 Entity 분리

장점

  1. 유연한 응답 구조
  2. 상호 참조 이슈 방지
  3. 보안 강화
  4. Entity에 없는 값 처리 가능

toEntity() 메서드

  • DTO를 Entity로 변환하는 메서드

6. 롬복 (Lombok)

  • 코드 간소화를 위한 라이브러리
  • 주요 어노테이션: @Data, @Slf4j

7. JPA 메서드

  • findAll(): 리포지토리의 모든 데이터 조회

8. 형변환 (Casting)

업캐스팅 (Upcasting)

  • 더 넓은 범위의 타입으로 변환 (예: 고양이 → 동물)

다운캐스팅 (Downcasting)

  • 더 좁은 범위의 타입으로 변환 (예: 동물 → 고양이)

컬렉션 형변환

  • Iterable → Collection → List 순으로 범위가 좁아짐
profile
어제보다 더 나은 오늘이 되자!

0개의 댓글