SpringBoot에서 DB 작업을 도와주는 JPA 에서 JpaRepository 라는 interface를 지원해준다. 이 메소드 중 getById, findById의 차이를 살펴보자
getById
실제 객체를 반환한다.
다음 코드를 살펴보자
public Product selectProduct(Long number) {
Product selectedProduct = productRepository.getById(number);
return selectedProduct;
}
number를 Id로 하여 Id기반으로 데이터를 찾아내는 메소드이다.
반환
실제로 반환되는 것은 Product 객체이다.
데이터가 없는 경우
EntityNotFoundException 예외가 발생한다.
findById
Optional 객체 반환한다.
다음 코드 중 볼드체로 된 코드를 살펴보자
@Override
public Product updateProductName(Long number, String name) throws Exception {
Optional<Product> selectedProduct = productRepository.findById(number);
Product updatedProduct;
if (selectedProduct.isPresent()) {
Product product = selectedProduct.get();
product.setName(name);
product.setUpdatedAt(LocalDateTime.now());
updatedProduct = productRepository.save(product);
} else {
throw new Exception();
}
return updatedProduct;
}
반환
findById 메소드를 호출하면 Optional이라는 객체를 반환한다.
isPresent() 메소드를 이용하여 null인지 판단하고,
이를 get() 메소드를 이용하여 객체를 얻는다.
데이터가 없는 경우
Optional.isPresent() 값이 false이다.
Uploaded by N2T
'Programming > [Spring Boot]' 카테고리의 다른 글
Entity 관련 Annotation (0) | 2023.03.12 |
---|---|
Lombok (0) | 2023.03.12 |
DB 관련 용어 (1) | 2023.02.01 |
Swagger를 활용한 REST API 명세 문서화 (0) | 2023.01.25 |
PUT/DELETE API 만들기 (1) | 2023.01.21 |