Hibernate Reactive supports
Executing Queries
Mutiny
Stateful Session
import com.linecorp.kotlinjdsl.support.hibernate.reactive.extension.createQuery
import com.linecorp.kotlinjdsl.support.hibernate.reactive.extension.createMutationQuery
import io.smallrye.mutiny.Uni
import org.hibernate.reactive.mutiny.Mutiny
val sessionFactory: Mutiny.SessionFactory = ...
val context = JpqlRenderContext()
// Get a list of results
val selectQuery = jpql {
select(
entity(Book::class)
).from(
entity(Book::class)
)
}
val books: Uni<List<Book>> = sessionFactory.withSession { session ->
session.createQuery(selectQuery, context).resultList
}
// Execute an update statement
val updateQuery = jpql {
update(
entity(Book::class)
).set(
path(Book::price), BookPrice(10)
).where(
path(Book::isbn).eq(Isbn("01"))
)
}
val updatedRows: Uni<Int> = sessionFactory.withTransaction { session, _ ->
session.createMutationQuery(updateQuery, context).executeUpdate()
}Stateless Session
Stage
Stateful Session
Stateless Session
A Note on Fetching Strategies and Session Scope
Safe: Accessing Lazy Associations Inside the Session Scope
Required: Using fetch join for Access Outside the Session Scope
fetch join for Access Outside the Session ScopeLast updated