Spring supports
Spring Boot AutoConfigure
Kotlin JDSL์ Spring Boot AutoConfigure๋ฅผ ์ง์ํฉ๋๋ค. ๋ง์ฝ ํ๋ก์ ํธ๊ฐ Spring Boot์ com.linecorp.kotlin-jdsl:spring-data-jpa-support
dependency๋ฅผ ๊ฐ์ด ํฌํจํ๊ณ ์๋ค๋ฉด, JpqlRenderContext
bean์ด KotlinJdslAutoConfiguration
์ ํตํด ์๋ ์์ฑ ๋ฉ๋๋ค.
๋ง์ฝ JpqlSerializer
๋๋ JpqlIntrospector
๋ฅผ bean์ผ๋ก ์ ์ธํ๋ค๋ฉด, ์๋์ผ๋ก JpqlRenderContext
์ ํด๋น bean์ด ํฌํจ๋ฉ๋๋ค.
Spring Data Repository
๋ง์ฝ ์ฌ์ฉํ๊ณ ์๋ JpaRepository
๊ฐ KotlinJdslJpqlExecutor
๋ฅผ ์์ํ๋ฉด, Kotlin JDSL์ด ์ ๊ณตํ๋ ํ์ฅ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
interface BookRepository : JpaRepository<Book, Isbn>, KotlinJdslJpqlExecutor
val result: List<Isbn?> = bookRepository.findAll {
select(
path(Book::isbn),
).from(
entity(Book::class),
)
}
val result: Page<Isbn?> = bookRepository.findPage(pageable) {
select(
path(Book::isbn),
).from(
entity(Book::class),
)
}
val result: Slice<Isbn?> = bookRepository.findSlice(pageable) {
select(
path(Book::isbn),
).from(
entity(Book::class),
)
}
val result: Stream<Isbn?> = bookRepository.findStream {
select(
path(Book::isbn),
).from(
entity(Book::class),
)
}
Spring Batch
SpringBatch๋ JPQL๋ก ์ฟผ๋ฆฌ๋ฅผ ํ ์ ์๋๋ก JpaPagingItemReader
์ JpaCursorItemReader
๋ฅผ ์ ๊ณตํฉ๋๋ค. Kotlin JDSL์ DSL๋ก ์์ฑ๋ JPQL ์ฟผ๋ฆฌ๊ฐ ์ ItemReader๋ค์์ ์คํ๋ ์ ์๋๋ก KotlinJdslQueryProvider
๋ฅผ ์ ๊ณตํฉ๋๋ค.
@Auwoired
lateinit var queryProviderFactory: KotlinJdslQueryProviderFactory
val queryProvider = queryProviderFactory.create {
select(
path(Book::isbn)
).from(
entity(Book::class),
)
}
JpaCursorItemReaderBuilder<Isbn>()
.entityManagerFactory(entityManagerFactory)
.queryProvider(queryProvider)
.saveState(false)
.build()
Last updated