wannaqueen
Search…
31.6 jOOQ 사용하기
Java Object Oriented Querying ( jOOQ )은 데이터베이스에서 Java 코드를 생성하고 유창한 API를 통해 유형 안전 SQL 쿼리를 작성할 수있게 해주는 Data Geekery 에서 널리 사용되는 제품입니다 . 상용 및 오픈 소스 에디션 모두 Spring Boot와 함께 사용할 수 있습니다.

31.6.1 코드 생성

jOOQ 타입 안전 질의를 사용하려면 데이터베이스 스키마에서 Java 클래스를 생성해야한다. jOOQ 사용자 설명서의 지침을 따를 수 있습니다. jooq-codegen-maven플러그인을 사용하고 spring-boot-starter-parent "parent POM"도 사용하는 경우 안전하게 플러그인의 태그를 생략 할 수 있습니다. Spring 부트 정의 버전 변수 (예 : hh2.version)를 사용하여 플러그인의 데이터베이스 종속성을 선언 할 수도 있습니다. 다음 목록은 예제를 보여줍니다.
1
<plugin>
2
<groupId>org.jooq</groupId>
3
<artifactId>jooq-codegen-maven</artifactId>
4
<executions>
5
...
6
</executions>
7
<dependencies>
8
<dependency>
9
<groupId>com.h2database</groupId>
10
<artifactId>h2</artifactId>
11
<version>${h2.version}</version>
12
</dependency>
13
</dependencies>
14
<configuration>
15
<jdbc>
16
<driver>org.h2.Driver</driver>
17
<url>jdbc:h2:~/yourdatabase</url>
18
</jdbc>
19
<generator>
20
...
21
</generator>
22
</configuration>
23
</plugin>
Copied!

31.6.2 DSLContext 사용

jOOQ가 제공하는 유창한 API는 org.jooq.DSLContext 인터페이스를 통해 시작됩니다. Spring Boot는 DSLContext를 Spring Bean으로 자동 구성하고이를 응용 프로그램 DataSource에 연결합니다. DSLContext를 사용하려면 다음 예제와 같이 @Autowire를 사용할 수 있습니다.
1
@Component
2
public class JooqExample implements CommandLineRunner {
3
4
private final DSLContext create;
5
6
@Autowired
7
public JooqExample(DSLContext dslContext) {
8
this.create = dslContext;
9
}
10
11
}
Copied!
jOOQ 매뉴얼은 create라는 변수를 사용하여 DSLContext를 유지하는 경향이 있습니다.
그런 다음에 DSLContext를 사용하여 다음 예제와 같이 쿼리를 구성 할 수 있습니다 .
1
public List<GregorianCalendar> authorsBornAfter1980() {
2
return this.create.selectFrom(AUTHOR)
3
.where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
4
.fetch(AUTHOR.DATE_OF_BIRTH);
5
}
Copied!

31.6.3 jOOQ SQL Dialect

spring.jooq.sql-dialect 속성이 구성되어 있지 않으면 Spring Boot가 데이터 소스에 사용할 SQL 언어를 결정합니다. 스프링 부트가 방언을 탐지하지 못하면 DEFAULT를 사용합니다.
스프링 부트는 오픈 소스 버전의 jOOQ가 지원하는 dialects 만 자동 구성 할 수 있습니다.

31.6.4 jOOQ 커스터마이징

jooQ Configuration이 생성 될 때 사용되는 @Bean정의를 정의하여 더 많은 고급 사용자 정의를 구현할 수 있습니다. 다음 jOOQ 유형에 대해 bean을 정의 할 수 있습니다.
  • ConnectionProvider
  • ExecutorProvider
  • TransactionProvider
  • RecordMapperProvider
  • RecordUnmapperProvider
  • RecordListenerProvider
  • ExecuteListenerProvider
  • VisitListenerProvider
  • TransactionListenerProvider
또한 jOOQ 설정을 완벽하게 제어하려면org.jooq.Configuration @Bean을 직접 생성 할 수 있습니다.

Copy link
Contents