모르는 부분 정리
@SpringBootApplication
스프링 부트의 자동 설정, 스프링 Bean 읽기, 생성 모두 자동 설정 (프로젝트 최상단에 위치)
@EnableJpaAuditing
JPA Auditing 기능 활성화
@RunWith(SpringRunner.class)
SpringRunner의 스프링 실행자를 사용하여 테스트. 스프링 부트 테스트와 JUnit의 연결자
(@SpringBootTest는 application의 context를 전부 로딩하여 무거울 수 있음.)
@WebMvcTest
Web에 집중할 수 있게 해줌. 컨트롤러를 테스트할때 사용. (JPA X)
@SpringBootTest
JPA까지 사용하여 테스트할때 사용.
MockMvc
웹 API를 테스트할때 사용. 실제 배포하지 않고 테스트 가능(GET, POST 등 테스트 가능)
ResponseEntity
HttpRequest에 대한 응답을 헤더와 바디에 담을 수 있음.
TestRestTemplate
REST방식의 API의 테스트를 위한 클래스
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 기능 포함 (자동으로 시간 매핑)