개발공부/spring boot

spring boot - Querydsl, DSL(Domain-Specific Language)이란??

기억지기 개발자 2023. 7. 15. 22:17

🏕️상황

  • Querydsl을 사용하다보니 DSL이란 용어가 나왔고, 처음에는 이 둘이 같은 말인줄 알았다. 
  • 그런데 DSL이 더 넓은 개념이었고 확실하게 알고싶어서 정리하며 공부하기로 하였다.

💛DSL(Domain-Specific Language)

특정 도메인이나 문제 영역에 특화된 언어입니다.
이는 해당 도메인의 용어, 구문, 추상화 등을 통해 해당 도메인의 작업을 더 쉽게 표현하고 코드를 읽기 쉽게 만드는 것을 목표로 합니다. 일반적으로 DSL은 크게 두 가지로 분류됩니다.

  1. External DSL (외부 DSL):
    - 외부 DSL은 독립적인 언어로서 도메인 특화 언어를 말한다.
    - 예시로는 SQL, HTML, CSS 등이 있다.
  2. Internal DSL (내부 DSL):
    - 내부 DSL은 일반 프로그래밍 언어 내에 도메인 특화 언어를 정의하는 것을 말한다. 
    - 기존 프로그래밍 언어의 문법과 구문을 사용하며, 해당 도메인의 특정 작업을 간결하게 표현
    - 예시로는 Querydsl, mockito 등이 있다.

💛Querydsl

  • Querydsl은 DSL의 한 종류로서, 특히 데이터베이스 쿼리 작성을 위한 DSL을 제공하는 라이브러리이다.
  • 내부 DSL의 한 종류로서, 데이터 베이스 쿼리 작성을 위한 도메인 특화 언어를 자바 코드로 제공하는 것이다.
  • 자바로 쿼리를 작성하기 위한 편리한 문법과 API를 제공하며, 자바 코드로 쿼리를 표현할 수 있게 해준다.
  • 이는 쿼리 작성 시 타입 안정성을 제공하고, IDE의 자동완성 및 정적 분석을 활용할 수 있다.

 

나만의 해석법으로 기억하고자 정리를 해보자면....
DSL은 어느 곳에서나 있을 수 있는 사용자의 편리함을 위한 방식(도구)인데, 편리함을 위해서 밖에(?)있으면 SQL, HTML이 되는거고, 다른 언어에 의존해서 있으면 Querydsl이 되는거지...!!ㅎㅎ