inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

반환 타입

안녕하세요! Exception 관련 질문드립니다!

317

박상호

작성한 질문수 1

0

안녕하세요! 6월 방학부터 개학한 오늘까지 김영한님의 모든 강의를 들으며 많은 깨달음을 얻고 실력을 키웠습니다.

먼저, 정말 좋은 강의를 해주셔서 감사하다는 말씀을 드립니다!

제가 질문드리고 싶은건 NoResultException입니다!

JpaReopsitory<T,ID>를 상속받는 레포지토리는

Member findByUsername(String username) 를 하고

memberRepository.findByUsername("DB에 없는 username") 을 할시에 null이 들어가면서 exception이 터지지 않는데

MemberRepository.java

public Member findByUsernmae(String username) {
return em.createQuery("select m from Member m where m.username=:username", Member.class)
.setParameter("username", username)
.getSingleResult();
}

memberJpaRepository.findByUsername("DB에 없는 값")을 할시에는 Exception이 터집니다.

먼저, Repository 내에서 NoResultException이 터지고 Repository에서 나갔을때는 EmptyResultDataAccessException이 터지는거에 궁금했었는데 이건 방금 강의에서 말씀해주셔서 아! 하고 알았습니다.

하지만, JpaRepository를 상속받은 레포지토리는 같은 쿼리를 날리지만 어떤 원리로 exception이 터지지 않고 null이 들어가는지 궁금합니다!

혹시, JpaRepository인터페이스를 구현한 클래스에서 Exception을 잡은다음에 null로 뿌려주는것일까요?

감사합니다!

spring java spring-boot JPA

답변 1

1

김영한

안녕하세요. 박상호님

생각하신 내용이 맞습니다.

처음에 JPA 스펙을 정의할 때는 하나의 데이터를 조회하는 getSingleResult()가 데이터가 없는 경우 예외를 발생하도록 정의했습니다. 그런데 개발자들이 막상 개발을 해보니 데이터가 없을 때 예외가 터지는 것 보다는 null을 받는 것이 더 편리하다고 생각했지요. 그래서 스프링 데이터 JPA는 이 경우 예외를 잡아서 null로 반환하도록 해줍니다.

감사합니다.

0

박상호

감사합니다!!!

changeTeam 메서드 질문

0

34

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

87

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

128

3

MemberRepository 구현체

0

71

1

pdf 표현 질문드립니다.

0

77

1

로그가 남지 않는 문제.

0

98

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

78

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

75

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

102

2

Sort 인터페이스는 잘 사용 안하나요?

0

59

1

스캔대상 질문드립니다.

0

48

1

하이버네이트6에서의 최적화에 이은 질문

0

92

1

save() vs saveAndFlush DB 통신 횟수

0

58

1

순수 JPA 리포지토리 코드 수정부분

0

92

2

bulk연산 후 flush하는 이유를 모르겠어요

0

163

3

bulk insert 질문입니다.

0

191

2

교만했던 것 같아요.

0

152

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

154

2

동적 테이블에 대한 질문

0

89

1

영속성 전이와 연관관계

0

141

2

강의 10:25 질문

0

78

1

단건 update 질문

0

104

2

엔티티 와 도메인의 경계

0

129

1

UsernameOnlyDto 타입 type mismatch 오류

0

123

1