[컴] jooq 사용, jooq gradle plugin

jooq란?/

jooq 사용, jooq gradle plugin

여기서는 jooq 를 사용하는데, jooq gradle plugin 을 이용해서 사용한다.

jooq 팀에서도 Grdle plugin 을 쓰는 것을 권장한다.

여기서는 gradle-jooq-plugin 의 README.md 의 내용을 기초로 사용법을 설명한다.

가장 간단한 예제는 아래와 같다.

generationTool

setup for generationTool

여기서는 mariadb와 연동되는 springboot 에 적용해서 mariadb 의 table, record 관련된 class 를 generationTool 을 사용해서 만드는 작업을 해보려 한다.

  1. 먼저, 다음링크를 참고해서 springboot 을 준비하자.

  2. jooq.gradle : 여기에 다음처럼 *.gradle 파일을 추가하자. 그냥 build.gradle 에 전부 넣을 수도 있다. 그것은 여기를 참고하자.

    • build.gradle
    ...
    apply from: 'jooq.gradle'
    ...
    • jooq.gradle:

      • database.inputSchema 를 지정해주지 않으면, 전체 database 에 대해 class 를 생성한다.
      • database.include, database.exclude : code generation 할때, include, exclude 조건을 넣을 수 있다. 예를 들면, 특정 이름의 table 에 대한 code generation 을 하거나 할 수 있다. 자세한 것은 Includes and Excludes 를 참고하자.
    import nu.studer.gradle.jooq.JooqEdition
    
    buildscript {
      repositories {
        gradlePluginPortal()
      }
    
      dependencies {
        classpath 'nu.studer:gradle-jooq-plugin:8.2'
      }
    }
    
    
    apply plugin: nu.studer.gradle.jooq.JooqPlugin
    
    repositories {
      mavenCentral()
    }
    
    dependencies {
      // mariadb 가 아니라면, 다른 client 를 사용하게 된다.
      jooqGenerator 'org.mariadb.jdbc:mariadb-java-client'
    }
    
    jooq {
      configurations {
        main {
          generationTool {
            logging = org.jooq.meta.jaxb.Logging.WARN
            jdbc {
              url = 'jdbc:mariadb://localhost:3307/stest?useUnicode=true&characterEncoding=utf-8'
              user = 'root'
              password = 'root'
              driver = 'org.mariadb.jdbc.Driver'
              properties {
                property {
                  // 이건 그냥 자신이 원하는 변수를 지정하는 부분으로 보면된다.
                  key = 'PAGE_SIZE'
                  value = 2048
                }
              }
            }
            generator {
              name = 'org.jooq.codegen.DefaultGenerator'
              database {
                name ='org.jooq.meta.mariadb.MariaDBDatabase'
                inputSchema = 'stest'   // 이것을 지정해주면, 여기 지정된 database의 schema 의 class 만 만든다.
                include = '.*'
                exclude = 'flyway_schema_history'
              }
              target {
                packageName = 'com.namh.namhex'
              }
              strategy {
                name = "org.jooq.codegen.DefaultGeneratorStrategy"
              }
            }
          }
        }
      }
    }
  3. gradlew.bat generateJooq 를 실행하면 class file 들이 만들어진다.

    • 위 같은 경우 packageName 이 com.namh.namhex 이기에 다음경로에 DB table, record에 대한 class file 이 다음 경로에 만들어진다.
      • <root>\build\generated-src\jooq\main\com\namh\namhex
d:\namhex000>gradlew generateJooq

> Task :generateJooq
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.2.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 5s
1 actionable task: 1 executed

jooq gradle-plugin examples

jooq 사용, jooq gradle plugin

db에 접속해서 table의 schema 를 얻는 것이 아니라 local 에 있는 schema 를 이용해서 만들수도 있다.

jooq slow query

Reference

  1. Getting Started with jOOQ | Baeldung

댓글 없음:

댓글 쓰기