[java] Java Querydsl을 사용하여 데이터베이스 테이블의 데이터 필드 수정하기

이번 포스트에서는 Java Querydsl을 사용하여 데이터베이스 테이블의 데이터 필드를 수정하는 방법에 대해 알아보겠습니다.

1. Querydsl 소개

Querydsl은 SQL과 함께 작동하는 타입 안전한 쿼리 빌더입니다. Querydsl을 사용하면 오타나 문법 오류 등으로 인해 발생하는 런타임 오류를 컴파일 시점에 잡을 수 있습니다.

Querydsl은 Java, Kotlin, Scala 등 다양한 언어를 지원하며, ORM 프레임워크인 Hibernate, JPA, MyBatis 등과도 연동하여 사용할 수 있습니다.

2. Querydsl 설정

Querydsl를 사용하기 위해서는 먼저 프로젝트에 Querydsl의 의존성을 추가해야 합니다. Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다.

dependencies {
    implementation 'com.querydsl:querydsl-core:<version>'
    implementation 'com.querydsl:querydsl-sql:<version>'
    // 사용하는 데이터베이스에 따라 querydsl-sql-<database>를 추가해야 합니다. (예: querydsl-sql-postgres)
    ...
}

Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependencies>
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-core</artifactId>
        <version><!-- 버전 --></version>
    </dependency>
    <dependency>
        <groupId>com.querydsl</groupId>
        <artifactId>querydsl-sql</artifactId>
        <version><!-- 버전 --></version>
    </dependency>
    <!-- 사용하는 데이터베이스에 따라 querydsl-sql-<database>를 추가해야 합니다. (예: querydsl-sql-postgres) -->
    ...
</dependencies>

또한, Querydsl을 사용하기 위해서는 코드 생성을 위한 설정을 해주어야 합니다. Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 설정합니다.

plugins {
    ...
    id "com.ewerk.gradle.plugins.querydsl" version "<version>"
    ...
}

querydsl {
    jpa = true // JPA를 사용하는 경우
    // sql = true // 일반 SQL을 사용하는 경우
    querydslSourcesDir = "${projectDir}/src/main/generated" // 생성된 Querydsl 클래스 파일을 저장할 디렉토리
}

Maven을 사용하는 경우에는 pom.xml 파일에 다음과 같이 설정합니다.

<build>
    ...
    <plugins>
        ...
        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version><version></version>
            <executions>
                <execution>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/generated-sources/java</outputDirectory>
                        <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        ...
    </plugins>
    ...
</build>

3. 데이터 필드 수정하기

Querydsl을 사용하여 데이터베이스 테이블의 데이터 필드를 수정하려면 다음의 단계를 따라야 합니다.

3.1. Q클래스 생성

먼저, Querydsl을 사용하여 데이터베이스 테이블의 쿼리를 작성하기 위해 Q클래스를 생성해야 합니다. Q클래스는 코드 생성 과정에서 생성되며, 데이터베이스의 테이블과 컬럼을 자바 클래스로 매핑해줍니다.

예를 들어, Person 테이블의 데이터 필드를 수정하기 위해 QPerson 클래스를 생성해야 합니다. 이는 Querydsl이 Person 테이블의 구조를 이해하고 쿼리를 작성하는 데 필요한 정보를 가지게됩니다.

3.2. 데이터 필드 수정 쿼리 작성

Q클래스를 생성한 후에는 수정할 데이터 필드에 대한 쿼리를 작성할 수 있습니다. Querydsl은 자바 코드를 사용하여 쿼리를 작성하므로, 강력한 타입 안정성을 제공합니다.

예를 들어, Person 테이블의 age 필드를 30으로 수정하는 쿼리를 작성하려면 다음과 같이 코드를 작성합니다.

QPerson person = QPerson.person;
new SQLUpdateClause(connection, SQLTemplates.DEFAULT)
    .where(person.name.eq("John")) // name이 "John"인 데이터를 선택
    .set(person.age, 30) // age 필드를 30으로 수정
    .execute();

위의 코드에서 person.name.eq("John")name 필드가 “John”인 데이터를 선택하고, person.age, 30age 필드를 30으로 수정한다는 의미입니다. execute() 메서드를 호출하여 쿼리를 실행합니다.

결론

Java Querydsl을 사용하면 데이터베이스 테이블의 데이터 필드를 손쉽게 수정할 수 있습니다. Querydsl을 사용하면 타입 안정성을 활용하여 컴파일 시점에 오류를 잡을 수 있으므로 안정적인 개발을 할 수 있습니다.

더 자세한 내용은 Querydsl 공식 문서를 참조해주세요.