지난글에 이어 이번에는 Exposed로 DAO 스타일 엔티티와 DSL 스타일 쿼리를 작성해본다. 그리고 공통 엔티티에 사용되는 BaseEntity를 작성하는 방법을 공유한다. 소스코드 https://github.com/mopil/ktor-server GitHub - mopil/ktor-server: HikariCP + MySQL + Exposed (DAO) + Koin HikariCP + MySQL + Exposed (DAO) + Koin. Contribute to mopil/ktor-server development by creating an account on GitHub. github.com Exposed 위키 https://github.com/JetBrains/Exposed/wiki Home Ko..
지난 글에 이어, 이번에는 데이터베이스를 연동해 볼 것이다. Ktor는 스프링과 다르게 데이터베이스 커넥션풀을 기본적으로 제공하지 않으므로, HikariCP를 수동으로 설정해야 한다. 또한 JPA를 사용할 수 없으므로 같은 회사에서 제작한 코틀린 전용 ORM인 Exposed를 사용한다. 소스코드 https://github.com/mopil/ktor-server GitHub - mopil/ktor-server: HikariCP + MySQL + Exposed (DAO) + Koin HikariCP + MySQL + Exposed (DAO) + Koin. Contribute to mopil/ktor-server development by creating an account on GitHub. github.c..
Ktor에는 스프링과 다르게 기본적으로 의존성 주입을 지원해주지 않는다. (경량 프레임워크라 그런가... 스프링이 무겁고 러닝커브가 높지만 참 많은 것을 지원해 주는 것 같다.) 여하튼 그래서 이번에는 Koin이라는 코틀린 의존성 주입 라이브러리를 통해서 의존성 주입을 설정해 보자. 소스코드 https://github.com/mopil/ktor-server GitHub - mopil/ktor-server: HikariCP + MySQL + Exposed (DAO) + Koin HikariCP + MySQL + Exposed (DAO) + Koin. Contribute to mopil/ktor-server development by creating an account on GitHub. github.com..
Ktor에는 스프링과 다르게 GET요청으로 넘어오는 쿼리 파라미터를 바로 객체로 직렬화해서 받는 기능을 제공하지 않는다. fun Route.productRouter() { val productService: ProductService by inject() get(Uris.Product.GET_ALL_PRODUCTS) { val params = call.parameters["name"] call.respond(productService.getAllProducts(params)) } } 이런식으로 call.parameters에서 하나하나 꺼내서 작업해야한다. 검색쿼리 처럼 쿼리 파라미터가 많이 넘어오는 경우는 객체로 바로 직렬화해주면 편할 것 같아서 유틸 함수를 만들어봤다. object RequestUtil..
JetBrains에서 제작한 Ktor라는 프레임워크로 간단한 서버 어플리케이션 세팅을 하는 방법을 공유한다. https://github.com/mopil/ktor-server GitHub - mopil/ktor-server: HikariCP + MySQL + Exposed (DAO) + Koin HikariCP + MySQL + Exposed (DAO) + Koin. Contribute to mopil/ktor-server development by creating an account on GitHub. github.com 먼저 프로젝트 아키텍처와 기본설정들을 먼저 살펴본다. 먼저 Ktor Generator라는 웹사이트를 통해서 프로젝트를 생성하자. https://start.ktor.io/?_ga=2...