분류 전체보기60 Data JPA 반환타입 Spring Data JPA 반환 타입에 따른 결과 조회 결과가 많거나 없으면? 컬렉션 결과 없음: 빈 컬렉션 반환 단건 조회 결과 없음: null 반환 결과가 2건 이상: javax.persistence.NonUniqueResultException 예외 발생 참고: 단건으로 지정한 메서드를 호출하면 스프링 데이터 JPA는 내부에서 JPQL의 Query.getSingleResult() 메서드를 호출한다. 이 메서드를 호출했을 때 조회 결과가 없으면 javax.persistence.NoResultException 예외가 발생하는데 개발자 입장에서 다루기가 상당히 불편하다. 스프링 데이터 JPA는 단건을 조회할 때 이 예외가 발생하면 예외를 무시하고 대신에 null 을 반환한다. 2023. 10. 11. Data JPA collection 파라미터 바인딩 이번 글은 @Query 어노테이션을 이용한 쿼리메소드에 일반 변수가 아닌 리스트 변수를 파라미터로 바인딩하는 방법이다. 이론적으로 중요한 부분은 아니지만 그냥 까먹을때 보면 좋을 거 같아서 짧게 적어둔다. @Query("select m from Member m where m.name in :names") List findByNames(@Param("names") List names); in절에 들어갈 값들을 리스트로 바인딩한다 파라미터타입이 리스트고 나머진 일반 변수 바인딩이랑 다를게 없다. 호출하는 부분에서 @GetMapping("collectionParamBindingTest") public List collectionParamBindingTest(){ return memberDataJpaReposi.. 2023. 10. 11. @Query 값, DTO로 반환받기 @Query 어노테이션을 이용해서 엔티티 뿐만아니라 단일값과 DTO형태로도 리턴받을 수 있다. 다음예제를 보자 먼저 단일값으로 리턴받는 경우이다. @Query("select m.name from Member m where m.id= :id") String findByIdValue(@Param("id")Long id); 먼저 JPARepository를 상속받는 인터페이스에 구현한다. 사용할 컬럼을 셀렉트에서 명시하면되서 단순하다. @GetMapping("queryMethodValueTest") public String queryMethodValueTest(Long id){ return memberDataJpaRepository.findByIdValue(id); } 해당 메소드를 호출하는 컨트롤러에서 호출하.. 2023. 10. 11. Data JPA 쿼리메소드 쿼리 메소드 기능 3가지 메소드이름으로 쿼리생성 메소드이름으로 JPA NamedQuery 호출 @Query 어노테이션을 활용하여 리파지토리 인터페이스에 쿼리 직접 정의 예제 public List findByName(String name){ return em.createQuery("select m from Member m where m.name=:name", Member.class) .setParameter("name",name).getResultList(); } 해당 소스는 순수JPA 리포지토리를 이용한 JPQL임 . 쿼리 메소드는 Repository 인터페이스에 간단한 네이밍 룰을 이용하여 메소드를 작성하면 원하는 쿼리를 실행할 수 있음. Data JPA의 메소드이름 쿼리생성방식으로 변경하면 쉽게 소스.. 2023. 10. 10. 이전 1 2 3 4 5 6 ··· 15 다음