프로젝트를 진행하면서 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에서 지원하는 """ 멀티라인 문자열을 알게 되면서 코드 가독성과 생산성이 크게 향상되었음.
멀티라인 문자열을 몰랐던 시절 아래와 같이
@Select("SELECT * " +
"FROM orders " +
"WHERE orders_status = #{status} " +
"AND cancel_reason IS NULL " +
"ORDER BY create_dt DESC")
이 방식은 작은 SQL에는 적합했지만, 코드가 간결하지 않으며 오타 위험이 있어서 에러가 많이 발생했었음.
""" 멀티라인 문자열 방식Java 15(정식배포) 이상에서는 아래처럼 쿼리를 깔끔하게 작성할 수 있음.
@Select("""
SELECT *
FROM orders
WHERE orders_status = #{status}
AND cancel_reason IS NULL
ORDER BY create_dt DESC
""")
결과적으로 코드의 가독성이 크게 향상되며, SQL 문법 구조를 쉽게 파악할 수 있고 오타 위험도 줄어들면서 생산성도 향상했음
멀티라인 문자열은 시작과 끝을 """로 감싸서 작성.
String sql = """
SELECT *
FROM orders
WHERE orders_status = 'CONFIRMED'
ORDER BY create_dt DESC
""";
String sql = """
SELECT *
FROM orders
WHERE orders_status = 'CONFIRMED'
AND cancel_reason IS NOT NULL
ORDER BY create_dt DESC
""";
""" 멀티라인 문자열은 코드 가독성을 향상시키고 유지보수성을 높이는 훌륭한 도구. """ 멀티라인을 사용하자.!!