이전 포스팅
https://turtlejacob.tistory.com/71
jscode - 스프링부트 입문 클래스 (Spring data JPA). 4
이전 포스팅 https://turtlejacob.tistory.com/70 jscode - 스프링부트 입문 클래스 (CURD APi). 3 이전 포스팅 https://turtlejacob.tistory.com/69 jscode - 스프링부트 입문 클래스 (api와 네트워크). 2 이전 포스팅 https://turt
turtlejacob.tistory.com
jscode - 스프링부트 입문 클래스 5회차 학습내용 기록( 2023.07.21 )
학습목표
- Spring Data JPA
- Optional
- 비지니스 로직 추가하기
Spring Data JPA
- JPAreposittory을 상속받는 repository 인터페이스를 통해서 spring data jpa의 기능을 사용하여 자동쿼리를 생성해 요청할 수 있다
- 자동 쿼리 생성
- 이는 생성한 repository 인터페이스의 메소드를 만들어 주기만 하면 메소드명을 보고 쿼리를 생성해 자동 요청해주는 기능이다.
- distinct → 중복 없이
- order by → 정렬 방식
- 예시
- 자동 쿼리 생성
아래와 같이 인터페이스에 메소드만 만들어주면 된다
//name을 받아 엔티티를 찾아 반환한다.
List<ProductEntity> findByName(String name);
//name과price를 받아 엔티티를 찾아 반환한다
List<ProductEntity> findByNameAndPrice(String name, int price);
//name을 받아 중복없이 가격순으로 정렬하여 엔티티를 찾아 반환한다
List<ProductEntity> findByNameOrderByPriceDesc(String name);
// 사용 예시
@Service
public class ProductService {
private final ProductRepository productRepository;
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
public List<ProductEntity> findByNameOrderByPriceDesc( String name){
return productRepository.findByNameOrderByPriceDesc(name);
}
public List<ProductEntity> getFindByNameAndPrice(String name, int price){
return productRepository.findByNameAndPrice(name,price);
}
}
Optional
- 오류가 날수도 있고 없을 수도 없는 곳에 덮어서 사용한다
- 간단한 예제는 아래 과제 부분에 예시로 작성하겠다
- 관련 링크 : https://mangkyu.tistory.com/70
[Java] Optional이란? Optional 개념 및 사용법 - (1/2)
이번에는 Java8부터 지원하는 Optional 클래스에 대해 알아보도록 하겠습니다. 1. Optional이란? Optional 개념 및 사용법 [ NPE(NullPointerException) 이란? ] 개발을 할 때 가장 많이 발생하는 예외 중 하나가 바
mangkyu.tistory.com
후기
jpa기능은 좀 당황스러울 정도로 많은 부분을 처리해주는 것 같다. jpa만 다루는 내용의 책이 그렇게 두꺼운 이유를 알 수 있었던거 같다.
과제
- 상품 상세 조회 API에 예외처리 추가하기
public ProductEntity getProductId(Long id) throws Exception {
Optional<ProductEntity> index= productRepository.findById(id);
index.orElseThrow(() -> new Exception("찾을 수 없는 상품입니다."));
return index.get();
}
- lombok 의존성 추가하고 활용하기
- entity 객체에 롬복 기능의 애노테이션을 활용하면 자동으로 처리해줘
- 코드를 단축화시켜 가시성을 높이고
- 생산성을 높여준다.
다음 포스팅
https://turtlejacob.tistory.com/73
jscode - 스프링부트 입문 클래스 (MVC). 6
이전 포스팅 https://turtlejacob.tistory.com/72 jscode - 스프링부트 입문 클래스 (Spring Data JPA 활용과 예외처리). 5 이전 포스팅 https://turtlejacob.tistory.com/71 jscode - 스프링부트 입문 클래스 (Spring data JPA). 4 이
turtlejacob.tistory.com
'Development studies > spring' 카테고리의 다른 글
jscode - 스프링부트 입문 클래스 (수업 마무리). 7 (0) | 2023.08.16 |
---|---|
jscode - 스프링부트 입문 클래스 (MVC). 6 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (Spring data JPA). 4 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (CURD APi). 3 (0) | 2023.08.16 |
jscode - 스프링부트 입문 클래스 (api와 네트워크). 2 (0) | 2023.08.09 |