Intro
코드를 작성하다 보면 SQL 쿼리나 JSON과 같은 긴 문자열을 사용해야 할 때가 많다. 기존에는 여러 줄의 문자열을 표현하려면 줄마다 문자열을 따로 작성하거나, 줄바꿈을 위해 \n
과 같은 이스케이프 문자를 일일이 추가해야 해서 불편함이 있었다.
이번 글에서는 Java 13부터 도입된 새로운 기능인 텍스트 블록 (Text Blocks) 에 대해 다룬다. 텍스트 블록은 멀티라인 문자열을 보다 간편하게 작성할 수 있는 기능으로, 가독성을 높이고 실수를 줄일 수 있는 여러 장점이 있다.
멀티라인 문자열 처리
Old Java
이전까지 Java에서 멀티라인 문자열을 처리하는 것은 다소 번거로운 작업이었다. 예를 들어, SQL 쿼리를 작성해야 한다고 생각해 보자.
String sql = "SELECT id, name, email FROM users "
+ "WHERE active = true "
+ "ORDER BY name ASC";
위와 같이 각 줄마다 +
연산자로 연결하거나 줄바꿈을 위해 \n
을 추가해야 했다.
작은 쿼리라면 문제가 없지만, 쿼리가 길어지거나 여러 줄로 작성할 필요가 있는 경우 매우 지저분해지고 실수하기 쉽다.
또한, JSON 데이터를 String으로 처리하려 할 때도 비슷한 불편함이 있었다. JSON의 구조가 복잡할 경우, 코드의 가독성이 떨어져 유지보수가 어려웠다.
다른 언어에서의 멀티라인 문자열
자바 외에도 다양한 언어가 멀티라인 문자열 문제를 해결하기 위해 여러 방식을 도입해 왔다. 예를 들어, Python에서는 """
로 여러 줄에 걸친 문자열을 선언할 수 있고, Kotlin에서도 """
을 활용한 Raw String을 사용해 멀티라인 문자열을 쉽게 작성할 수 있다.
val jsonData = """
{
"id": 1,
"name": "John Doe",
"active": true
}
""".trimIndent()
Kotlin의 Raw String은 큰따옴표 세 개("""
)를 사용해 줄바꿈이나 이스케이프 문자 없이 멀티라인을 그대로 사용할 수 있다. Java도 비슷한 접근을 위해 텍스트 블록을 도입하게 된 것이다.
Java 텍스트 블록
Java 13에서 처음 소개된 텍스트 블록은 큰따옴표 세 개("""
)를 사용하여 멀티라인 문자열을 간편하게 작성할 수 있도록 한 기능이다. Java 15에서 정식으로 기능이 추가되었으며, 아래와 같이 사용할 수 있다.
String sql = """
SELECT id, name, email
FROM users
WHERE active = true
ORDER BY name ASC
""";
이제 +
연산자나 \n
을 사용하지 않고도 여러 줄에 걸친 문자열을 작성할 수 있다. 들여쓰기와 줄바꿈을 신경 쓰지 않아도 되므로 SQL 쿼리나 JSON과 같이 복잡한 문자열을 다룰 때 훨씬 깔끔하게 표현할 수 있다.
텍스트 블록의 사용 예시
텍스트 블록을 사용할 때 가장 유용한 예시 중 하나는 SQL 쿼리다. 텍스트 블록을 사용하면 복잡한 SQL 쿼리도 쉽게 읽고 쓸 수 있다.
String query = """
INSERT INTO employees (id, name, department)
VALUES (1, 'Alice', 'Engineering'),
(2, 'Bob', 'Sales'),
(3, 'Carol', 'Marketing');
""";
기존 방식으로 작성했다면 +
연산자와 줄바꿈이 추가되어 코드가 난잡해졌을 것이다. 텍스트 블록을 사용함으로써 SQL 구조가 명확해지고, 쿼리를 관리하기도 쉬워졌다.
텍스트 블록의 특징
텍스트 블록에는 몇 가지 주목할 만한 특징이 있다:
- 자동 줄바꿈 처리: 코드에서 작성한 그대로 줄바꿈이 적용되므로 별도로
\n
을 사용할 필요가 없다. - 여백 제거: 들여쓰기 처리에도 유리하여, 블록 내의 줄들이 자동으로 정렬된다.
- 이스케이프 시퀀스 사용 가능: 필요할 경우 여전히
\"
,\t
등의 이스케이프 문자를 사용할 수 있다.
예를 들어, JSON 데이터를 텍스트 블록으로 표현하면 다음과 같다.
String json = """
{
"id": 1,
"name": "Alice",
"active": true
}
""";
텍스트 블록을 통해 JSON, SQL 등 다양한 형태의 데이터를 관리하는 것이 훨씬 편리해졌다.
결론
Java의 텍스트 블록은 멀티라인 문자열을 간결하게 표현할 수 있는 훌륭한 기능으로, 코드의 가독성을 높이고 실수할 가능성을 줄여준다. Java 13 이후로 이 기능을 활용할 수 있으니, SQL 쿼리, JSON, HTML 등 여러 줄의 문자열을 다뤄야 할 때 꼭 활용해 보자.
'Programming > Java' 카테고리의 다른 글
Jsoup 활용한 웹페이지 요청 및 응답 파싱 (3) | 2024.11.11 |
---|---|
[Java] static 키워드 이해하기 (0) | 2024.11.10 |
Java로 Tesseract를 활용한 OCR 구현하기 (2) | 2024.11.07 |
TreeSet에서 객체를 구별할 때 equals와 hashCode만으로는 충분하지 않다 (0) | 2024.09.29 |
[Java] Carriage return 그리고 Line feed (0) | 2024.01.05 |