실전! 스프링부트와 JPA활용 - 웹어플리케이션 개발 (작성중)

장원령·2021년 6월 11일

Backend(Java Spring)

목록 보기
6/6

김영한님의 실전! 스프링 부트와 JPA활용 - 웹 어플리케이션 개발 1,2 강의중 공부하면서 배운 부분을 요약했습니다.

1. Java Spring

@RequiredArgsConstructor

: 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해 줍니다. 주로 의존성 주입 편의성을 위하여 사용한다.

@AllArgsConstructor

: 모든 필드에 대한 생성자를 생성합니다. 또한 의존성 주입 할 대상이 많아졌을 때 훨씬 깔끔합니다.

@PathVariable

https://elfinlas.github.io/2018/02/18/spring-parameter/
@Valid

@Valid

: 유효한 객체인지 검사함.

@NotNull : Null 불가
@Null : Null만 입력 가능
@NotEmpty : Null, 빈 문자열 불가

@Data

: 롬복 내에서 클래스안의 모든 private 필드에 대해 @Getter와 @Setter를 적용하여 세터/게터를 만들어주고 클래스내에 @ToString 과 @EqualsAndHashCode를 적용시켜 메소드를 오버라이드 해주며 @RequiredArgsConstructor를 지정해 준다.

@Transactional

: 클래스에 트랜잭션 기능을 적용한 프록시 객체를 생성한다.

2. JPA

2.1 Fetch Type

: JPA가 Entity를 조회할 때 연관관계의 객체들을 가져오는 설정 값이다.

두 가지 타입이 있다.

Eager : Entity를 모두 가져온다.
Lazy : Entity를 가져오지 않고 getter로 접근할 때 가져온다.

자세한 내용은 아래의 블로그를 참조하면 좋을 것 같다.

http://jaynewho.com/post/39

3. 엔티티 개발 및 DB

3.1 엔티티를 가지고 있는 데에서 비즈니스 로직이 나가는 것이 좋음

4. 강의 내용

4.1

4.2

4.3

4.4

4.5

4.6

4.7 웹 계층 개발

상품 수정

: 제일 중요한 부분

변경 감지와 병합

  1. 준영속 엔티티
    :

  2. 변경 감지와 병합
    : 변경감지 기능읗 사용하면

4.8 api 개발 기본

: 항상 엔티티와 API 스펙을 명확하게 분리해야함을 유념하자.
: API 요청 스펙에 맞추어 별도의 DTO를 파라미터로 받는다

/**
 * 등록 V2: 요청 값으로 Member 엔티티 대신에 별도의 DTO를 받는다.
 */
 @PostMapping("/api/v2/members")
 public CreateMemberResponse saveMemberV2(@RequestBody @Valid
CreateMemberRequest request) {
 Member member = new Member();
 member.setName(request.getName());
 Long id = memberService.join(member);
 return new CreateMemberResponse(id);
 }

@RestController

: @Controller + @ResponseBody 두개의 어노테이션을 포함한다.

@ResponseBody

: 데이터 자체를 JSON이나 XML로 바로 보내자

@ PostMapping PutMapping

4.9 api 개발 고급

4.9.1 API 개발 고급 - 지연 로딩과 조회 성능 최적화

@JsonIgnore
프록시 초기화?
N+1의 문제 떄문에 fetch는 lazy사용한다.

fetch join

4.9.2 API 개발 고급 - 컬렉션 조회 최적화

0개의 댓글