여니의 프로그래밍 study/Spring & Spring Boot

[스프링부트] PostApiController Test 작성 (게시글 수정 기능)

여니's 2022. 3. 22. 21:13

Posts.java

update 부분에 쿼리가 없는 이유는

JPA의 영속성 컨텍스트 때문입니다.

 

영속성 컨텍스트란?

: 엔티티를 영구 저장하는 환경으로 일종의 논리적 개념입니다.

JPA의 핵심 내용은 엔티티가 영속성 컨텍스트에 포함되어 있느냐 아니냐로 갈립니다.

 

 

만약 트랜잭션 안에서

데이터베이서에서 데이터를 가져오면?

이 데이터는 영속성 컨텍스트가 유지된 상태입니다.

 

이 상태에서 해당 데이터의 값을 변경하면

트랜잭션이 끝나는 시점에 해당 테이블에 변경분을 반영합니다.

 

즉, Entity의 값만 변경하면 Update 쿼리를 따로 해줄 필요가 없어지빈다.

이 개념을 더티 체킹이라고 합니다. 

 

 


PostsRepository.java

 


PostsUpdateRequestDto.java

dto는 Entity의 필드 중 일부만 사용합니다.

따라서 생성자로 entity를 받아서 필드에 넣어줍니다.

 

 

 


PostsApiController.java


 

PostsApiControllerTest.java

 


참고서적 및 링크

: 스프링 부트와 AWS로 혼자 구현하는 웹 서비스