几十年来,开发人员一直在努力优化持久层实现,包括存储业务数据、快速检索相关数据,以及——最重要的是——简化数据事务逻辑,而无需考虑编程语言。
幸运的是,这一挑战促成了 Java 生态系统的发明,开发人员可以在其中实现 Java 持久化 API (JPA)。 例如,带有 Panache 的 Hibernate 对象关系映射器 (ORM) 是 Java 生态系统中 JPA 实现的标准框架。
Kotlin 是一种编程语言,旨在与 Java 虚拟机 (JVM) 上的多种编程语言一起运行业务应用程序,用于 Java 持久化实现。 但是,Java 开发人员仍然需要赶上 Kotlin 的新语法和 JPA API。
本文将解释 Quarkus 如何通过 Quarkus Hibernate ORM Panache Kotlin 扩展使开发人员更容易实现 Kotlin 应用程序。
使用 Quarkus CLI 创建新的 Hibernate ORM Kotlin 项目
首先,使用 Quarkus 命令行工具 (CLI) 创建一个新的 Maven 项目。 以下命令将添加 Quarkus 扩展以启用 Hibernate ORM Panache Kotlin
和 PostgreSQL JDBC
扩展
$ quarkus create app hibernate-kotlin-example \
-x jdbc-postgresql, hibernate-orm-panache-kotlin
输出应如下所示
...
<[SUCCESS] ✅ quarkus project has been successfully generated in:
--> /Users/danieloh/Downloads/demo/hibernate-kotlin-example
...
创建新的实体和存储库
带有 Panache 的 Hibernate ORM 使开发人员能够以活动记录模式处理实体,具有以下优点
- 自动生成 ID
- 无需 getter/setter
- 用于访问的超级有用的静态方法,例如
listAll()
和find()
- 基本操作无需自定义查询(例如,
Person.find
("name", "daniel"))
Kotlin 不支持以 Java 相同的方式使用带有 Panache 的 Hibernate ORM。 相反,Quarkus 允许开发人员使用 companion
对象将这些功能引入 Kotlin,如下所示
@Entity(name = "Person")
class Person : PanacheEntity() {
lateinit var name: String
}
这是一个简单的示例,说明开发人员如何实现 PanacheRepository
来访问实体
@ApplicationScoped
class PersonRepository: PanacheRepository<Person> {
fun findByName(name: String) = find("name", name).firstResult()
}
超级简单! 现在我将向您展示如何实现资源以通过 RESTful API 访问数据。
创建资源以处理 RESTful API
Quarkus 完全支持上下文和依赖注入 (CDI),这允许开发人员注入 PersonRepository
以访问资源中的数据(例如,findByName(name)
)。 例如
@Inject
lateinit var personRepository: PersonRepository
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{name}")
fun greeting(@PathParam("name") name: String): String {
return "Hello ${personRepository.findByName(name)?.name}"
}
运行并测试应用程序
与往常一样,使用开发人员模式运行您的 Quarkus 应用程序
$ cd hibernate-kotlin-example
$ quarkus dev
输出应如下所示
...
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. \
Live Coding activated.
INFO [io.quarkus] (Quarkus Main Thread) \
Installed features: [agroal, cdi, hibernate-orm, \
hibernate-orm-panache-kotlin, jdbc-postgresql, \
kotlin, narayana-jta, resteasy, smallrye-context-propagation, vertx]
--
Tests paused
Press [r] to resume testing, [o] Toggle test output, \
[:] for the terminal, [h] for more options>
Quarkus Dev 服务 在您运行容器运行时(例如 Docker 或 Podman)并添加数据库扩展时,会自动启动相关的数据库容器。 在此示例中,我已经添加了 jdbc-postgresql
扩展,因此当 Quarkus Dev 模式开始时,PostgreSQL 容器将自动运行。 在我的 GitHub 存储库中查找解决方案。
访问 RESTful API (/hello
) 以按 name
参数检索数据。 在本地终端中执行以下 curl
命令行
& curl localhost:8080/hello/Daniel
输出应如下所示
Hello Daniel
结论
这是对 Quarkus 如何使开发人员能够使用 Kotlin 编程 API 为反应式 Java 应用程序简化 JPA 实现的基本解释。 开发人员还可以在 Quarkus 中继续使用 Kotlin 编程进行开发时获得更好的开发人员体验,例如开发服务和实时编码。 有关 Quarkus 的更多信息,请访问 Quarkus 网页。
评论已关闭。