해당 글은 groomedu의 스프링부트 나만의 블로그 만들기 강의를 보고 개인적으로 정리한 글입니다.
JPA의 영속성 컨텍스트란?
DB에서 데이터를 불러와서 JPA 1차 캐시에 저장하고 있는 상태, 이를 영속화 되었다 표현
예시)
update() 메소드에서 .findById로 id에 해당하는 User 객체를 들고온 상태 -> JPA에 영속화 됌.
@Transactional
@PutMapping("/dummy/user/{id}")
public User updateUser(@PathVariable int id, @RequestBody User requestUser) throws IllegalAccessException {
User user = userRepository.findById(id).orElseThrow(()->{
return new IllegalAccessException("수정에 실패하였습니다.");
});
user.setPassword(requestUser.getPassword());
user.setEmail(requestUser.getEmail());
//userRepository.save(user);
return user;
} --> commit
commit 시에 password, email 값이 변경이 된 걸 JPA 영속성 컨텍스트에서 User 객체와 비교를 통해 인식을 하면
Controlller 종료 시에 DB에 변경된 User 객체로 밀어 넣고 update 문을 수행
더티체크란?
객체가 JPA에 영속화 되어있는 상태에서 JPA가 객체의 변경을 감지하여 DB 수정
'Spring > SpringBoot' 카테고리의 다른 글
[goormedu 강의] 스프링부트 블로그 만들기 04 - 08 Exception 처리하기 (0) | 2024.08.24 |
---|---|
[goormedu 강의] 스프링부트 블로그 만들기 04 - 07 삭제하기 테스트 (0) | 2024.08.24 |
[goormedu 강의] 스프링부트 블로그 만들기 04 - 05 update 테스트 (0) | 2024.08.15 |
[goormedu 강의] 스프링부트 블로그 만들기 04 - 04 전체 select 및 paging 테스트 (0) | 2024.08.15 |
[goormedu 강의] 스프링부트 블로그 만들기 04 - 03 id로 select 테스트 (0) | 2024.08.13 |