티스토리 뷰
회원가입을 하는 경우, 아이디에 대한 중복검사를 하는 기준을 이메일로 선정하였습니다. Postman으로 테스트하던 중 No entity found for query 라는 에러를 발견하였습니다. javax.persistence.NoResultException가 발생하였고, 말 그대로 해석하면 쿼리를 날렸는데 결과를 찾지 못했다는 뜻입니다.
여기서 떠올랐던 생각은 쿼리를 잘못 날렸거나, 쿼리는 정상인데 엔티티를 찾지 못했다는 것입니다.
생각해보면, 이메일 중복검사를 하기위해 쿼리를 날렸는데 신규 가입을 하는 경우에는 당연히 엔티티를 찾지 못합니다. 그러면 쿼리의 결과를 반환하는 과정에서 문제가 있다고 판단하였습니다.
현재 작성된 findByEmail 반환타팁을 보면 User 객체이고 쿼리의 결과를 getSingleResult로 받아오고 있습니다. 여기서 javax.persistence.NoResultException이 발생하는데 NoResultException에 들어가보면 getSingleResult로 결과를 가져왔을 때 결과가 없는 경우에 무조건 예외를 발생시킨다는 것을 알 수 있었습니다.
try - catch를 통해 예외를 핸들링하는 것이 좋을지 getResultList를 이용해 처리하는 것이 좋을지 생각해보았습니다. 회원가입을 할 때 마다 예외를 발생시켜 예외를 핸들링 하는 것 보다 getResultList 함수를 이용해 쿼리의 결과를 받아오고 Optional 처리를 해주는게 더 깔끔한 로직이라고 판단하였습니다.
Optional 객체를 반환하여, 해당 로직을 검증하는 service에서 적절히 판단할 수 있습니다 !
'Spring' 카테고리의 다른 글
[Spring] Mock 객체의 리턴값이 왜 null이 나올까? (1) | 2023.04.23 |
---|---|
[Querydsl] Unable to load class 'com.mysema.codegen.model.Type' 에러 해결 방법 (0) | 2023.01.12 |
[Spring] JPA ManyToOne, OneToOne 매핑 된 객체를 가져올 때 문제점 (0) | 2022.06.17 |
[Spring] JPA 상속관계 매핑, @MappedSuperClass (0) | 2022.06.15 |
[Spring] JPA 다양한 연관관계 매핑 (0) | 2022.05.29 |
- Total
- Today
- Yesterday
- 피움
- ZNS SSD
- 파이썬
- ZNS
- 5주차 회고
- java
- 우테코
- 네트워크
- 피움 6주차 회고
- 백준
- 알림기능개선기
- Spring
- 런칭 페스티벌
- 3차 데모데이
- 환경 별 로깅 전략 분리
- 8주차 회고
- dm-zoned
- 팀프로젝트
- jpa
- 2차 데모데이
- 회고
- 알림개선기
- dm-zoned 코드분석
- 스프링 부트
- 스프링 프레임워크
- 우테코 회고
- 스프링MVC
- 스프링 Logback
- CI/CD
- 프로젝트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |