강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

보키님의 프로필 이미지
보키

작성한 질문수

스프링은 어려워! 코틀린과 Ktor로 백엔드/서버개발 기초정복 (커피주문시스템 개발)

데이터베이스 접근 및 로직 처리를 위한 도메인 모델 만들기

Repository의 추상화

작성

·

8

0

CrudRepository, ExposedCrudRepository로 제네릭 인터페이스 추상화를 한것까진 좋습니다!

근데 스프링에서는 @Repository라는 애너테이션을 붙여줌으로써 AOP 포인트컷이랑 어드바이저에서 한번 더 예외를 래핑해서 오라클, MySQL, PostgreSQL 등 여러 벤더사들의 각각 다른 예외를 하나로 몰아서 DataAccessException으로 들어갈 수 있도록 해주는데, ktor도 그런 비슷한 기능이 있나요?

코드는 그대로 두고 연결 DB만 바꿔도

FK 오류인지, duplicated key 오류인지, lock time out 오류인지 그런것들도 다 추상화가 되는걸까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

보키님께서 질문하신 Kotlin과 Ktor에서는 Spring의 @Repository와 같은 기능에 대한 내용과 DB 예외 처리에 대한 것을 말씀하셨네요.

Ktor는 Spring과는 달리 경량화된 서버 프레임워크로, Spring의 풍부한 기능을 모두 직접적으로 제공하진 않습니다. 예외를 일관되게 처리하는 Spring의 DataAccessException과 같은 추상화는 기본적으로 제공되지는 않지만, 코틀린 언어나 관련 라이브러리(예: Exposed)에서 이를 보완할 수 있는 방법들이 있습니다.

Ktor에서 예외 추상화 방법

  1. Exposed 라이브러리 활용: Exposed는 코틀린 용 유명한 ORM 라이브러리입니다. 이것을 활용하여 일부분의 데이터베이스 예외 처리를 할 수 있습니다. Exposed는 데이터베이스 예외에 대한 자체 메커니즘을 제공합니다.

  2. 인터셉터 사용: Ktor는 인터셉터를 통해 요청과 응답에 대한 처리를 할 수 있으며, 이 과정에서 예외 처리 로직을 추가할 수 있습니다. 이렇게 함으로써, 특정 DB 예외를 커스텀 예외로 변환하여 처리할 수 있습니다.

  3. 코루틴과 예외 처리: 코틀린의 코루틴을 활용하면 비동기 작업에서 발생하는 예외를 보다 유연하게 처리할 수 있습니다. 예를 들어, try-catch 블록을 통해 DB 예외를 잡아 custom exception으로 변환하는 방식을 사용할 수 있습니다.

관련 자료

  • Exposed 공식 문서: Exposed의 예외 처리 혹은 데이터베이스 연결 예제에 대해 더 알아볼 수 있는 링크입니다.
  • Ktor 공식 문서: Ktor의 인터셉터 및 코루틴 사용법에 대한 더 많은 정보를 찾을 수 있습니다.

Spring과 같은 기능을 Ktor에 구현하기 위해서는 다소 수고스러운 작업이 필요할 수 있지만, 필요한 기능에 따라 플러그인과 커스텀 구현으로 해결할 수 있을 것입니다. 그러므로 Kotlin과 Ktor에 대한 심화된 학습이 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

보키님의 프로필 이미지
보키

작성한 질문수

질문하기