Coding/Back - Spring Framework

Spring Data JPA #Day10

꿀딴지- 2023. 8. 31. 14:03

Spring Data JPA

  • JPA : Java 에서 RDB를 사용하기 위해 정해 놓은 표준 스펙(명세)
  • Hibernate ORM : JPA 구현체. 실제 사용하는 API
  • Spring Data JPA : Hibernate ORM을 Spring에서 더 쉽게 사용할 수 있도록 해주는 모듈
  1. java-rdb (ORM) 매핑하기 : @Entity (@Column @Id 등 관계설정)
  2. Repository 인터페이스 구현
    • 기본 메서드(CRUD 등)은 Spring data JPA에서 기본으로 제공 extends JpaRepository<Entity클래스명, pk타입>
    • 커스텀 메서드(쿼리)만 인터페이스 내에 작성 → 쿼리는 jpa에서 변경해줌
    • JPQL 객체 지향 쿼리 사용 : 엔티티 클래스의 객체를 대상으로 객체를 조회 → 쿼리 처리는 jpa에서 함
public interface CoffeeRepository extends JpaRepository<Coffee, Long> {
    Optional<Coffee> findByCoffeeCode(String coffeeCode);

    Optional<Coffee> findByCoffee(long coffeeId);
    //@Query(value = "SELECT * FROM COFFEE WHERE coffee_Id = :coffeeId", nativeQuery = true) //sql 기준
    @Query(value = "SELECT c FROM Coffee c WHERE c.coffeeId = :coffeeId")  
    // Coffee 클래스명, coffeeId Coffee 클래스의 필드명
    //c :Coffee 클래스의 별칭. SQL에서 사용하는 ‘*’이 아니라 ‘c’로 모든 필드를 조회하는 것
    // select생략가능 @Query(value = "FROM Coffee c WHERE c.coffeeId = :coffeeId")
}