Kotlin
A concise multiplatform language developed by JetBrains
Exposed 1.0 Is Now Available
This is the first major release of Exposed – a huge milestone for both the project and the Exposed team! This release brings many new exciting features, the most requested being R2DBC support, as well as performance enhancements and bug fixes. Exposed 1.0 also introduces a stable API that guarantees no breaking changes until the next major release.
Get started
Can’t wait to start building your next project with Exposed 1.0? Check out the examples with Ktor or Spring and join the #exposed channel on Kotlin Slack if you have any questions or feedback.
If you are already using Exposed, check out the Migration Guide on how to migrate from version 0.61.0 to 1.0.
What’s new
R2DBC
Highly requested by the community, R2DBC support has made it into Exposed. This brings support for reactive drivers to the Exposed SQL DSL approach.
val database = R2dbcDatabase.connect(
url = "r2dbc:postgresql://db:5432/mydatabase",
databaseConfig = R2dbcDatabaseConfig {
defaultMaxAttempts = 1
defaultR2dbcIsolationLevel = IsolationLevel.READ_COMMITTED
connectionFactoryOptions {
option(ConnectionFactoryOptions.USER, dbUser)
}
}
)
Spring Support
Spring is heavily used in Kotlin and with Exposed. For 1.0, we will continue to support Spring Boot 3 alongside Spring Boot 4. Exposed brings many quality of life improvements when using Spring with Exposed, such as GraalVM native image support and better transaction management.
@Component
@Transactional
class UserService {
// Use Exposed dsl without `transaction { }`
fun findUserById(id: UserId): User? =
UserTable.selectAll().where { UserTable.id eq id.value }
.firstOrNull()?.let { row ->
User(
id = UserId(row[UserTable.id].value),
name = row[UserTable.name],
age = row[UserTable.age],
)
}
}
Exposed 1.0: Stable, scalable, and looking forward | Chantal Loncle
Chantal Loncle gave an overview of Exposed 1.0, how we got here, and what the future might bring at KotlinConf 2025. (embed video in blog)
Thank you!
We want to thank everyone for their support, contributions, and feedback as we prepared for this release!
We’d especially like to thank all of our contributors whose pull requests were included in this release:
Avi18971911, Attacktive, Marceli Grabowski, Michael Edwards, Tim Koopman, Mikhael Sokolov, Juan Luis Caro, Nick Telford, Ilya, Kuyho Chung, tronto20, mole828, Jiwoo Kim, Seonghyeon, Cho, Zachary Sistrunk, devch37
Your suggestions and issue reports are always welcome!
Get Started with Exposed | Join the Community on Slack
