본문으로 이동
스프링캠프 2024 [Track 2] 3.스프링 R2DBC 연동 기능을 활용한 작은 코틀린 SQL DSL 개발기 (오현석)
컨퍼런스

스프링캠프 2024 [Track 2] 3.스프링 R2DBC 연동 기능을 활용한 작은 코틀린 SQL DSL 개발기 (오현석)

SpringCamp 2024 · YouTube

원문 보기

AI 핵심 요약

DatabaseClient와 Kotlin Flow를 활용한 비동기 데이터베이스 서비스에 적용할 작은 SQL DSL을 설계하고, 코틀린의 언어 기능으로 구현하는 과정을 설명했다. 프로퍼티 위임 프로바이더로 엔티티 필드의 이름과 타입을 수집하고, 수신 객체 지정 람다와 DSL 마커로 쿼리 문맥과 사용 위치를 제어했다. 프로퍼티 참조, 연산자 오버로딩, 봉인된 클래스를 활용해 타입 안전한 필드 지정과 SQL 표현식을 만들었으며, 실제 구현에는 파라미터 바인딩과 다양한 연산자 지원 등 추가 작업이 필요하다고 짚었다. Spring R2DBC 연동에서는 커넥션 풀 설정을 중복하지 않고, 트랜잭션 안에서 Flow를 중간에 수집해 끊지 않도록 주의해야 한다.

  • 코틀린 내부 DSL은 별도 컴파일러 없이 호스트 언어의 타입 검사와 문법을 활용할 수 있다.
  • 프로퍼티 위임 프로바이더를 이용하면 객체 생성 시점에 필드 이름과 타입을 수집할 수 있다.
  • 수신 객체 지정 람다와 DSL 마커를 조합하면 DSL 문맥을 제공하고 잘못된 구문 사용을 컴파일 단계에서 제한할 수 있다.
  • 프로퍼티 참조와 연산자 오버로딩은 필드 지정의 타입 안전성과 표현력을 높이지만, 구현 복잡도도 함께 고려해야 한다.
  • 리액티브 트랜잭션에서는 Flow를 중간에 수집해 끊지 말고, Flow 안에서 오류가 전파되도록 구성해야 한다.

소개

[중급] 스프링의 R2DBC 클라이언트인 DatabaseClient를 코틀린에서 사용하면 Flow를 통해 간편하게 비동기 데이터베이스 프로그래밍을 즐길 수 있습니다. 또, 코틀린의 DSL 관련 기능을 활용하면 원하는 DSL을 손쉽게 정의할 수 있습니다. 제 발표에서는 스프링 DatabaseClient를 사용해 비동기 REST API 서비스를 개발하는 과정과 몇가지 팁을 함께 공유하고, DatabaseClient에 사용하기 위한 SQL 쿼리 DSL을 코틀린으로 만드는 과정을 살펴보면서 코틀린의 강력한 DSL 기능을 함께 살펴봅니다. 스프링은 잘 모르셔도 되지만, 코틀린 중급 정도의 지식이 필요합니다. 특히 Flow, 확장함수와 수신객체 지정 람다, 인라인, 제네릭스 등을 사용하는 코드를 발표 내내 보시게 됩니다. 🎙️ 오현석 (모빌리티42) 🗓️ 스프링캠프 2024 Track 2 - 3 (2024년 05월 25일) 🧭 SETEC 컨벤션센터 📂 발표자료 : http://spr...

비슷한 학습 자료

컨퍼런스 SpringCamp 2024

[초급] Spring AI와 함께 실험하고 성장하는 AI 개발 생성형 AI 시대, LLM을 이용하여 AI 애플리케이션을 사용하기 위해서는 API 연동이 필요합니다. Python 진영에서는 이미 LangChain 이나 Llama Index 등의 프레임워크가 널리 알려지고 사용되고 있습니다. Spring 팀에서도 생성형 AI 애플리케이션이 Python 개발자뿐만 아니라 여러 프로그래밍 언어에 걸쳐 보편화될 것이라는 믿음으로 Spring AI 프로젝트를 시작했습니다. Spring AI의 핵심은 AI 애플리케이션 개발의 기반이 되는 추상화를 제공하는 것입니다. 추상화의 끝판왕인 Spring에서는 이를 어떻게 풀어냈는지 함께 살펴보면서 AI 서비스 개발 경험과 능력을 함께 성장해보시죠! 🎙️ 황민호 (카카오) 🗓️ 스프링캠프 2024 Track 1 - 2 (2024년 05월 25일) 🧭 SETEC 컨벤션센터 📂 발표자료 : http://springcamp.ksug.org/2024/...

백엔드 AI에이전트 개발

컨퍼런스 SpringCamp 2024

[초급] 마이크로서비스를 개발할 때 가장 어려워하는 부분은 서비스 별로 데이터베이스를 분리한다는 점입니다. SQL JOIN을 REST API로 대체하려니 성능이 느릴 것 같고 데이터베이스의 트랜잭션 보장이 없어지니 정합성이 깨지지 않을까 걱정합니다. 마이크로서비스와 함께 API Composition, Event Sourcing, CQRS, SAGA 같은 반짝이는 기술들이 함께 소개되었지만, 실전에선 이보다는 평범한 기술을 사용하는 경우가 많습니다. 관련해서 마이크로서비스를 개발할 때의 구현 이슈를 소개하고, 실전에서는 어떻게 풀어내는지 소개합니다. 🎙️ 김용욱 (삼성 SDS) 🗓️ 스프링캠프 2024 Track 1 - 4 (2024년 05월 25일) 🧭 SETEC 컨벤션센터 📂 발표자료 : http://springcamp.ksug.org/2024/static/docs/T1S4.pdf 📺 스프링캠프 2024 영상 모두 보기 : https://youtube.com/pla...

백엔드

컨퍼런스 SpringCamp 2024

[초급] 안정성이 중요한 은행 환경에서 트래픽이 많은 홈 서비스를 새로 개발하며, 동료들과 함께 고민하고 결정했던 경험을 공유해보려 합니다. 과거의 결정들에 대한 회고와 함께 저희 팀의 여정을 돌아보겠습니다. 🎙️ 이영규 (카카오뱅크) 🗓️ 스프링캠프 2024 Track 1 - 5 (2024년 05월 25일) 🧭 SETEC 컨벤션센터 📂 발표자료 : http://springcamp.ksug.org/2024/static/docs/T1S5.pdf 📺 스프링캠프 2024 영상 모두 보기 : https://youtube.com/playlist?list=PLdHtZnJh1KdY3gEi7EPa2AuWn5NKRVmDf&si=XE89UrhYKkIb1-oe [🔗 스프링캠프 & KSUG] 스프링캠프 2024 웹 https://springcamp.ksug.org/2024/ 스프링캠프 페이스북 https://www.facebook.com/springcampkr/ 스프링캠프 유튜브 ...

백엔드

컨퍼런스 SpringCamp 2024

[중급] 현대에는 수천, 수만의 동시 요청을 처리하는 서버를 구현하기 위해 멀티 스레드, 논블로킹, 액터 모델, 리액티브 프로그래밍 등 다양한 기술 활용하고 있습니다. 그중에서 코틀린의 코루틴과 JDK 21에서 정식 릴리즈된 버추얼 스레드는 가장 우아하고 현대적인 동시성 기법으로 평가받고 있습니다. 이번 기회를 통해 두 기술의 차이점과 통합하는 방법에 대해 알아보고자 합니다. 🎙️ 이상훈 (엘박스) 🗓️ 스프링캠프 2024 Track 2 - 1 (2024년 05월 25일) 🧭 SETEC 컨벤션센터 📂 발표자료 : http://springcamp.ksug.org/2024/static/docs/T2S1.pdf 📺 스프링캠프 2024 영상 모두 보기 : https://youtube.com/playlist?list=PLdHtZnJh1KdY3gEi7EPa2AuWn5NKRVmDf&si=XE89UrhYKkIb1-oe [🔗 스프링캠프 & KSUG] 스프링캠프 2024 웹 ht...

백엔드 프로그래밍 언어

컨퍼런스 SpringCamp 2024

[초급] spring에서 kotlin coroutine 활용에 초첨을 맞추어, 비동기 프로그래밍과 coroutine의 동작구조부터 spring 프레임워크에서의 실제 적용까지를 이야기하려고 합니다. spring kotlin을 사용하지만 coroutine을 적용하지 않거나, coroutine이 적용되었지만 잘 사용하고있는지 고민이 되는 분들에게 어떻게 spring에서 coroutine을 in action 할 지 소개하고자 합니다. 🎙️ 최진영 (우아한형제들) 🗓️ 스프링캠프 2024 Track 2 - 2 (2024년 05월 25일) 🧭 SETEC 컨벤션센터 📂 발표자료 : http://springcamp.ksug.org/2024/static/docs/T2S2.pdf 📺 스프링캠프 2024 영상 모두 보기 : https://youtube.com/playlist?list=PLdHtZnJh1KdY3gEi7EPa2AuWn5NKRVmDf&si=XE89UrhYKkIb1-oe [...

백엔드 프로그래밍 언어

컨퍼런스 SpringCamp 2024

[초급] MSA가 대세가 되어진 세상입니다. 하지만 여전히 제한된 리소스에서 데이터를 처리해야하는 경우도 존재합니다. Data Sketch를 통하여 작은 리소스를 이용해서도 높은 성능을 낼수 있습니다. bloom filter, count min sketch, hyperloglog 같은 대표적인 Data Sketch에 대해 알아보고 상황에 따른 활용에 대해 이야기 해보자 합니다. 🎙️ 황영 (IMQA) 🗓️ 스프링캠프 2024 Track 2 - 4 (2024년 05월 25일) 🧭 SETEC 컨벤션센터 📂 발표자료 : http://springcamp.ksug.org/2024/static/docs/T2S4.pdf 📺 스프링캠프 2024 영상 모두 보기 : https://youtube.com/playlist?list=PLdHtZnJh1KdY3gEi7EPa2AuWn5NKRVmDf&si=XE89UrhYKkIb1-oe [🔗 스프링캠프 & KSUG] 스프링캠프 2024 웹 h...

알고리즘 · 자료구조 데이터베이스