DEVLOG

[JPA] UPDATE 본문

Spring Boot/JPA

[JPA] UPDATE

BINTHEWORLD 2022. 6. 27. 12:58

더티체킹

엔티티의 변경이 일어나면, 변경 내용을 자동으로 데이터베이스에 반영하는 JPA 특징이다.
영속성 컨텍스트의 1차캐시에 담긴 Object(영속화된 Object)와 이를 가져와 수정한 Object를 비교하여 변경을 감지해서 수정한다.

예제 DummyControllerTest

@RestController
public class DummyControllerTest {
	
	@Autowired
	private UserRepository userRepository;
	
	// save() 메소드는 id를 전달하지 않으면 INSERT
	// save() 메소드는 id를 전달하면 해당 id에 대한 데이터가 있으면 UPDATE
	// save() 메소드는 id를 전달하면 해당 id에 대한 데이터가 없으면 INSERT
	@Transactional // 함수 종료시에 자동 commit 이 됨
	@PutMapping("/dummy/user/{id}")
	public User updateUser(@PathVariable int id, @RequestBody /*JSON 데이터*/ User requestUser) {
		System.out.println("id : " + id);
		System.out.println("password : " + requestUser.getPassword());
		System.out.println("email : " + requestUser.getEmail());
		
		User user = userRepository.findById(id).orElseThrow(()->{
			return new  IllegalArgumentException("수정에 실패하였습니다.");
		});
		
		user.setPassword(requestUser.getPassword());
		user.setEmail(requestUser.getEmail());
		
		// userRepository.save(user);
		
		return null;		
	}
}

'Spring Boot > JPA' 카테고리의 다른 글

[JPA] not null constraint violation 에러  (0) 2022.11.16
[JPA] open-in-view  (0) 2022.06.30
[JPA] 페이징  (0) 2022.06.27
[JPA] SELECT  (0) 2022.06.27
[JPA] 연관관계 매핑  (0) 2022.06.25
Comments