• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

fetchOne()의 예외

22.05.27 15:36 작성 조회수 411

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.
 
항상 좋은 강의 감사합니다.
@Repository를 통해 JPA의 예외를 스프링이 추상화한 예외로 변환한다고 알고있습니다.
스프링 데이터 jpa의 경우 구현체에 @Repository가 있어서 단건조회에서 결과가 2개 이상이 나오는 경우
org.springframework.dao.IncorrectResultSizeDataAccessException 처럼 스프링 예외로 추상화되어 나오고 @Repository 클래스, 순수 jpa를 이용했을때도 같았습니다. querydsl도 JPQL 빌더이기에 @Repository에 의해 스프링 예외로 추상화 되지 않을까 생각했지만 com.querydsl.core.NonUniqueResultException 처럼 querydsl의 예외가 나왔습니다.
 
스프링 데이터 jpa에서 하부 구현기술을 바꾸더라도 기존 비즈니스 로직에 영향을 최대한 주지 않게
Service, Controller 계층에 스프링 예외로 올라가도록 한거라고 배웠는데 Querydsl 예외로 올라가면 결국 Querydsl 을 사용하지 않게 되면 기존 예외처리에 대한 부분에서 변경을 해야할 것 같은데 실무에선 그냥 Querydsl예외로 처리하나요?
생각해보면 현재 Qeurydsl 에서 다른 기술로 바꾸거나 빼거나 할 경우는 없어보이긴합니다 ㅎㅎ
 
 

답변 1

답변을 작성해보세요.

1

안녕하세요. pj5016님

아쉽지만 Querydsl은 스프링 예외 추상화가 되지 않을 것 같아요.

필요하면 리포지토리에서 반환할 때 잡아서 예외를 직접 변환하신 다음에 반환하셔야 할 듯 합니다.

감사합니다.