[kotlin] 코틀린에서 동적 쿼리 작성하기

일부 사용 사례에서는 SQL 쿼리를 동적으로 생성해야 할 수도 있습니다. Kotlin에서는 이를 위해 몇 가지 방법을 사용할 수 있습니다.

문자열 템플릿을 사용한 동적 쿼리 작성

동적 쿼리를 생성하는 가장 간단한 방법은 문자열 템플릿을 사용하는 것입니다. 이 방법은 간단하고 직관적이지만, 보안 측면에서 취약점이 될 수 있습니다.

val condition = "age > 18"
val query = "SELECT * FROM users WHERE $condition"

위 예제에서는 condition 변수를 사용하여 동적으로 WHERE 절을 생성했습니다.

StringBuild를 활용한 동적 쿼리 작성

더 복잡한 동적 쿼리를 생성할 때는 StringBuilder를 사용하여 쿼리를 동적으로 빌드할 수 있습니다.

val queryBuilder = StringBuilder("SELECT * FROM users WHERE 1=1")
if (condition1) {
    queryBuilder.append(" AND age > 18")
}
if (condition2) {
    queryBuilder.append(" AND name = 'Alice'")
}
val query = queryBuilder.toString()

이 방법은 문자열 조작에 있어 더 많은 유연성을 제공하며, 안전한 SQL을 작성할 수 있도록 도와줍니다.

Anko 라이브러리를 활용한 동적 쿼리 작성

Anko 라이브러리를 사용하면 Kotlin에서 DSL 형식의 편리한 방식으로 동적 SQL 쿼리를 작성할 수 있습니다.

val query = buildString {
    append("SELECT * FROM users WHERE 1=1")
    if (condition1) {
        append(" AND age > 18")
    }
    if (condition2) {
        append(" AND name = 'Alice'")
    }
}

Anko의 DSL 형식을 사용하면 가독성이 뛰어나고 SQL 쿼리를 직관적으로 작성할 수 있습니다.

결론

Kotlin에서 동적 SQL 쿼리를 작성하는 다양한 방법을 살펴보았습니다. 문자열 템플릿, StringBuilder, 그리고 Anko 라이브러리를 활용하여 적절한 방법을 선택하여 프로젝트에 적용할 수 있습니다. 각 방법마다 장단점이 있으니 상황에 맞게 선택하여 사용하시기 바랍니다.

참고 자료