6.1. jOOQ概要および設定
6.1. jOOQ概要
6.1.1. JPA使用禁止
TQS認証プロジェクトではJPA(Hibernate)の使用を禁止します。以下の依存関係は含めることができません。
| 禁止依存関係 | 理由 |
|---|---|
spring-boot-starter-data-jpa | JPA/Hibernateを含む |
hibernate-core | ORMフレームワーク |
spring-data-jpa | JPA抽象化 |
6.1.2. JPAではなくjOOQを選択する根拠
| 項目 | jOOQ | JPA/Hibernate |
|---|---|---|
| SQL制御 | 開発者がSQLを直接作成 | ORMがSQLを自動生成 |
| 性能予測 | 実行されるSQLを正確に予測可能 | N+1、遅延ロードなど予測困難 |
| 型安全性 | コンパイル時にSQLエラーを検出 | 実行時にエラーが発生 |
| 複雑なクエリ | ネイティブSQL水準の表現力 | JPQLの限界、ネイティブクエリが必要 |
| スキーマ同期 | Flyway + codegenで常に最新状態 | Entityマッピング不一致のリスク |
6.1.3. 標準依存関係
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jooq</artifactId>
</dependency>spring-boot-starter-jooqは以下を含みます:
- jOOQコアライブラリ
- Spring Transaction統合
- DSLContext自動構成
6.2. DSLContext設定
6.2.1. 自動構成
Spring Bootの自動構成によりDSLContextがBeanとして登録されます。application.ymlにデータソースとjOOQ設定を追加すれば、別途のJava設定なしに使用することができます。
yaml
spring:
jooq:
sql-dialect: postgres6.2.2. カスタム設定(必要時)
jOOQの詳細動作をカスタマイズする必要がある場合にのみ設定クラスを作成します。
java
@Configuration
public class JooqConfig {
@Bean
public DefaultConfigurationCustomizer jooqConfigCustomizer() {
return configuration -> {
configuration.settings()
.withRenderNameCase(RenderNameCase.LOWER)
.withRenderQuotedNames(RenderQuotedNames.NEVER)
.withExecuteLogging(true);
};
}
}| 設定 | 値 | 説明 |
|---|---|---|
renderNameCase | LOWER | SQLレンダリング時に小文字を使用 |
renderQuotedNames | NEVER | 識別子の引用符を不使用 |
executeLogging | true | 実行SQLロギングを有効化 |