인프런 커뮤니티 질문&답변
컨트롤러에서 엔티티 조회후 서비스에서 데이터 변경할때 궁금한점이 있습니다.
작성
·
254
0
컨트롤러에서 엔티티 조회 한 후 서비스 계층에 파리미터로 엔티티를 넘기고 서비스 계층에서 해당 엔티티의
데이터를 변경 할 경우 파라미터로 넘어오는 엔티티는 서비스 계층의 영속성 컨텍스트와 관련이 없는 엔티티 이기 때문에 dirty checking이 발생하지 않을것이라고 생각했습니다.
그런데 이를 직접 시험해 볼경우 서비스 계층에서 dirty checking 이 발생합니다.
어떻게 서비스 계층에서 더티 체킹이 되는걸까요??
controller
@GetMapping("/test")
public void test(@RequestParam("itemId") String itemId){
System.out.println("=======controller start=========");
Item item = em.find(Item.class, Long.valueOf(itemId));
itemService.change(item);
System.out.println("=======service end=========");
System.out.println("=======controller end=========");
}
service
@Transactional
public void change(Item item){
System.out.println("=======service start=========");
item.setName("테스트");
}
![]()
구글 파일 업로드 링크입니다!
https://drive.google.com/file/d/1uboJa8w_Opbl59G_oE7mmXlpfKMJ7Fiq/view?usp=sharing






감사합니다!