Gradle
ebean-init を使用すると、Gradle アプリケーションが自動的にセットアップされます。
ebean-init を使用せずに Gradle プロジェクトをセットアップする手順を次に示します。
Ebean プラグインの追加
Gradle ビルドの実行中に機能強化を実行する ebean
プラグインを追加します。
plugins {
id('idea')
id('java')
id('io.ebean') version '13.25.0'
}
Ebean 依存関係の追加
dependencies {
...
compile 'io.ebean:ebean:13.25.0'
// query bean generation
annotationProcessor 'io.ebean:querybean-generator:13.25.0'
testCompile 'io.ebean:ebean-test:13.25.0'
...
}
- querybean-generator - クエリ Bean の APT 生成
- ebean-test - Docker コンテナの使用など、テスト
Kotlin
Kotlin では、次のとおり annotationProcessor を kapt
に変更し、クエリ Bean を Java ではなく Kotlin として生成する kotlin-querybean-generator
を使用します。
dependencies {
...
compile 'io.ebean:ebean:13.25.0'
// query bean generation
kapt 'io.ebean:kotlin-querybean-generator:13.25.0'
testCompile 'io.ebean:ebean-test:13.25.0'
...
}
オプションの Ebean セクション
ebean
セクションを追加し、向上レベルのデバッグを制御します。
ebean {
debugLevel = 1
}
テスト結果
Gradle は既定で出力ログを抑制します。SQL、DDL、トランザクションログなどを表示するには、テストセクションで testLogging.showStandardStreams = true
を設定する必要があります
test {
testLogging.showStandardStreams = true
}
プロジェクト例
テスト結果
以下に ./gradlew clean test
の出力例を示します。
- 機能強化中のクラス(Ebean debugLevel = 1 のため)
- DDL、SQL、トランザクション(この場合は logback-test.xml で制御)
$ ./gradlew clean test
> Task :compileJava
ebean-enhance> cls: org/example/domain/BaseDomain msg: enhanced
ebean-enhance> cls: org/example/domain/Customer msg: enhanced
> Task :test
enhancement prior to running tests
Gradle suite > Gradle test > org.example.domain.CustomerTest.saveAndFind STANDARD_OUT
14:48:49.900 [Test worker] INFO io.ebean.internal.DefaultContainer - DatabasePlatform name:db platform:h2
14:48:50.063 [Test worker] TRACE io.ebean.TXN - txn[1001] Begin
14:48:50.064 [Test worker] INFO io.ebean.DDL - Executing db-create-all.sql - 1 statements
14:48:50.064 [Test worker] DEBUG io.ebean.DDL - executing 1 of 1 create table customer ( id bigint auto_increment not...
14:48:50.076 [Test worker] DEBUG io.ebean.TXN - txn[1001] Commit
14:48:50.086 [Test worker] DEBUG io.ebean.SQL - txn[1002] insert into customer (name, start_date, comments, version) values (?,?,?,?); --bind(Hello Rob,2018-01-30,[LOB],1)
14:48:50.098 [Test worker] DEBUG io.ebean.SUM - txn[1002] Inserted [Customer] [1]
14:48:50.098 [Test worker] DEBUG io.ebean.TXN - txn[1002] Commit
14:48:50.122 [Test worker] DEBUG io.ebean.SQL - txn[1003] select t0.id, t0.name, t0.start_date, t0.version from customer t0 where t0.id = ? ; --bind(1, )
14:48:50.124 [Test worker] DEBUG io.ebean.SUM - txn[1003] FindBean type[Customer] origin[D88YBi.A.A] exeMicros[3052] rows[1] bind[1, ]
14:48:50.129 [Test worker] DEBUG io.ebean.SQL - txn[1004] select t0.id, t0.name, t0.start_date, t0.version from customer t0 where t0.id is not null ; --bind()
14:48:50.130 [Test worker] DEBUG io.ebean.SUM - txn[1004] FindMany type[Customer] origin[D88YBm.A.A] exeMicros[0] rows[0] predicates[t0.id is not null ] bind[]
hello Hello Rob
.. started on: 2018-01-30
14:48:50.136 [Test worker] DEBUG io.ebean.SQL - txn[1005] select t0.id, t0.name, t0.start_date, t0.version from customer t0 where t0.name like ? and t0.id > ? ; --bind(BatOutOfHell%,1)
14:48:50.136 [Test worker] DEBUG io.ebean.SUM - txn[1005] FindMany type[Customer] origin[D88YBj.A.A] exeMicros[1619] rows[0] predicates[t0.name like ? and t0.id > ? ] bind[BatOutOfHell%,1]
bats:BeanList size[0] list[]
BUILD SUCCESSFUL in 1s