Repository의 추상화
50
投稿した質問数 31
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에서 예외 추상화 방법
Exposed 라이브러리 활용: Exposed는 코틀린 용 유명한 ORM 라이브러리입니다. 이것을 활용하여 일부분의 데이터베이스 예외 처리를 할 수 있습니다. Exposed는 데이터베이스 예외에 대한 자체 메커니즘을 제공합니다.
인터셉터 사용: Ktor는 인터셉터를 통해 요청과 응답에 대한 처리를 할 수 있으며, 이 과정에서 예외 처리 로직을 추가할 수 있습니다. 이렇게 함으로써, 특정 DB 예외를 커스텀 예외로 변환하여 처리할 수 있습니다.
코루틴과 예외 처리: 코틀린의 코루틴을 활용하면 비동기 작업에서 발생하는 예외를 보다 유연하게 처리할 수 있습니다. 예를 들어, try-catch 블록을 통해 DB 예외를 잡아 custom exception으로 변환하는 방식을 사용할 수 있습니다.
관련 자료
- Exposed 공식 문서: Exposed의 예외 처리 혹은 데이터베이스 연결 예제에 대해 더 알아볼 수 있는 링크입니다.
- Ktor 공식 문서: Ktor의 인터셉터 및 코루틴 사용법에 대한 더 많은 정보를 찾을 수 있습니다.
Spring과 같은 기능을 Ktor에 구현하기 위해서는 다소 수고스러운 작업이 필요할 수 있지만, 필요한 기능에 따라 플러그인과 커스텀 구현으로 해결할 수 있을 것입니다. 그러므로 Kotlin과 Ktor에 대한 심화된 학습이 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
47
1
강의가 검은 화면으로 나옵니다.
0
48
1
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
44
2
DI시 eager과 lazy
0
37
2
타입스크립트
0
46
1
actuator에서 health 외의 다른 URL은 404 Notfound 에러가 발생합니다.
0
47
2
SettlementTargetRepository Jquery 질문
1
48
2
부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?
1
60
2
주사위앱 소개 및 레이아웃 설정 문제
0
59
2
엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??
1
67
2
제미니님 안녕하세요!
1
73
2
MCP 연동 인텔리제이 2.6.1
0
120
2
개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조
1
80
2
무중단 배포 / 컨테이너 이미지 관리에 주로 어떤 인프라를 활용하시나요?
0
66
1
34:22분 처럼 런타임 의존성 예외파악
0
62
1
jar 파일 실행 오류
0
112
1
코틀린 코드 보기
0
137
1
checkout 해도 branch가 안 바뀌네요
1
160
1
자바 LocalDateTime 직렬화 관련 질문
1
292
3
어떻게 ktor 실행시 같은 포트로 리액트 서버가 뜰 수가 있나요?
1
284
2
패키지 폴더 domain이 없네요.
1
306
2
jar 배포 시 frontend 페이지에 접속이 안되는 이슈
1
337
2
혹시 kotlinx-datetime 라이브러리를 사용하지 않으신 이유가 있으신가요?
1
602
2
첫번째 Ktor 서버 띄워보기 전에 강의 하나가 빠져있는것 같습니다.
1
298
2

