[테이블오더시스템][JAVA]MYBAITS 작성 시 멀티라인 문자열 기능을 사용하며 느낀 생산성 변화

Gaeng·2025년 5월 28일

JAVA

목록 보기
3/3

1. 배경

프로젝트를 진행하면서 MyBatis를 사용해 SQL 쿼리를 작성하던 중, 긴 SQL문을 처리하는 과정에서 저는 처음에 아래와 같이 작성했음.

@Update("UPDATE orders " +
        "SET " +
        "   orders_status = #{orderStatus}, " +
        "   cancel_reason = #{cancelReason}, " +
        "   total_price = 0, " +
        "   update_dt = NOW() " +
        "WHERE orders_no = #{orderNo}")

이 방식은 단순해 보이지만, SQL이 길어질수록 가독성이 떨어지고, 코드 작성 중에는 +를 빠뜨리는 실수를 자주 하게 됨.
그러던 중, Java에서 지원하는 """ 멀티라인 문자열을 알게 되면서 코드 가독성과 생산성이 크게 향상되었음.


2. 멀티라인 문자열의 등장 (Java 13 이상)

Before: 줄마다 큰따옴표 작성

멀티라인 문자열을 몰랐던 시절 아래와 같이

@Select("SELECT * " +
        "FROM orders " +
        "WHERE orders_status = #{status} " +
        "AND cancel_reason IS NULL " +
        "ORDER BY create_dt DESC")

이 방식은 작은 SQL에는 적합했지만, 코드가 간결하지 않으며 오타 위험이 있어서 에러가 많이 발생했었음.

After: """ 멀티라인 문자열 방식

Java 15(정식배포) 이상에서는 아래처럼 쿼리를 깔끔하게 작성할 수 있음.

@Select("""
        SELECT * 
        FROM orders 
        WHERE orders_status = #{status} 
          AND cancel_reason IS NULL 
        ORDER BY create_dt DESC
        """)

결과적으로 코드의 가독성이 크게 향상되며, SQL 문법 구조를 쉽게 파악할 수 있고 오타 위험도 줄어들면서 생산성도 향상했음

3. 멀티라인 문자열 사용시 주요 규칙

기본 문법

멀티라인 문자열은 시작과 끝을 """로 감싸서 작성.

String sql = """
        SELECT * 
        FROM orders 
        WHERE orders_status = 'CONFIRMED'
        ORDER BY create_dt DESC
        """;

들여쓰기 처리

  • 멀티라인 문자열은 자동으로 공통된 들여쓰기를 제거.
  • 개발자가 "SQL 위치나 코드 정렬을 보기 좋게 쓰기 위해 들여쓰기를 추가"하더라도, 런타임 결과에는 영향을 미치지 않음.
String sql = """
        SELECT * 
        FROM orders 
        WHERE orders_status = 'CONFIRMED' 
          AND cancel_reason IS NOT NULL
        ORDER BY create_dt DESC
        """;

4. 멀티라인 문자열을 알고난 뒤 희열

  • """ 멀티라인 문자열은 코드 가독성을 향상시키고 유지보수성을 높이는 훌륭한 도구.
  • SQL 쿼리를 다루는 프레임워크를 사용할 때 힘을 발휘하며, 프로그래머가 SQL 작성에만 집중할 수 있게 도와줌.
  • 결과적으로 생산성과 가독성이 향상이 되었음.
  • SpringBoot3에서는 17부터니까 """ 멀티라인을 사용하자.!!
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글