[SpringBoot & JPA] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 1 ~ 3

dgw0620·2023년 5월 12일

모르는 부분 정리

MainApplication

  • @SpringBootApplication
    스프링 부트의 자동 설정, 스프링 Bean 읽기, 생성 모두 자동 설정 (프로젝트 최상단에 위치)

  • @EnableJpaAuditing
    JPA Auditing 기능 활성화


Controller

  • @RestController
    JSON을 반환하는 컨트롤러로 만들어줌. (Controller 지시)

Test

  • @RunWith(SpringRunner.class)
    SpringRunner의 스프링 실행자를 사용하여 테스트. 스프링 부트 테스트와 JUnit의 연결자
    (@SpringBootTest는 application의 context를 전부 로딩하여 무거울 수 있음.)

  • @WebMvcTest
    Web에 집중할 수 있게 해줌. 컨트롤러를 테스트할때 사용. (JPA X)

  • @SpringBootTest
    JPA까지 사용하여 테스트할때 사용.

  • MockMvc
    웹 API를 테스트할때 사용. 실제 배포하지 않고 테스트 가능(GET, POST 등 테스트 가능)

  • ResponseEntity
    HttpRequest에 대한 응답을 헤더와 바디에 담을 수 있음.

  • TestRestTemplate
    REST방식의 API의 테스트를 위한 클래스


JPA

Spring의 웹 계층을 Web, Service, Repository, Dto, Domain으로 나눌 수 있다.
이 중 JPA를 사용할땐 비지니스 로직을 Domain에 구현한다.

  • @Entity
    DB의 테이블과 매칭될 클래스에 사용
    ⭐Setter메소드를 사용하지 않음. (변경X, 변경필요시 Dto 사용)⭐
    ⭐가능한 생성자 사용X, 대신 @Builder 을 사용하는게 더 좋음. (직관성 좋음.)⭐

  • @Id
    엔티티의 기본키 지정

  • @GeneratedValue(strategy = GenerationType.IDENTITY)
    기본키의 생성규칙을 지정 (GenerationType.IDENTITY는 auto_increment를 의미)

  • @Column
    굳이 선언 불필요 하지만 컬럼으로 추가할때 사용.(주로 기본값 외의 옵션이 필요할때 사용)

  • 더티 체킹
    트랜잭션이 끝나는 시점에 해당 테이블에 변경분을 반영.
    (Entity 객체의 값 변경 시 Update 쿼리를 DB에 전송할 필요 없음.)

  • @MappedSuperclass
    Entity 클래스들이 이 어노테이션이 적용된 클래스를 상속할 경우 필드들도 칼럼으로 인식

  • @EntityListeners(AuditingEntityListener.class)
    이 클래스에 Auditing 기능 포함 (자동으로 시간 매핑)

0개의 댓글