Simplifiez la mise en œuvre de la persistance Java avec Kotlin sur Quarkus

Pendant des décennies, les développeurs ont eu du mal à optimiser la mise en œuvre de la couche de persistance en termes de stockage des données métier, de récupération rapide des données pertinentes et, surtout, de simplification de la logique des transactions de données, quels que soient les langages de programmation.
Heureusement, ce défi a déclenché l’invention d’écosystèmes Java dans lesquels les développeurs peuvent implémenter l’API Java Persistence (JPA). Par exemple, Hibernate Object Relational Mapper (ORM) avec Panache est le framework standard pour la mise en œuvre de JPA dans l’écosystème Java.
Kotlin est un langage de programmation conçu pour exécuter des applications métier avec plusieurs langages de programmation au-dessus de Java Virtual Machine (JVM) pour l’implémentation de la persistance Java. Mais les développeurs Java ont encore du mal à rattraper la nouvelle syntaxe et les API JPA de Kotlin.
Cet article explique comment Quarkus permet aux développeurs d’implémenter plus facilement des applications Kotlin via l’extension Quarkus Hibernate ORM Panache Kotlin.
Contents
Créer un nouveau projet Hibernate ORM Kotlin à l’aide de Quarkus CLI
Tout d’abord, créez un nouveau projet Maven à l’aide de l’outil de ligne de commande Quarkus (CLI). La commande suivante ajoutera des extensions Quarkus pour activer Hibernate ORM Panache Kotlin
et PostgreSQL JDBC
extensions :
$ quarkus create app hibernate-kotlin-example \
-x jdbc-postgresql, hibernate-orm-panache-kotlin
La sortie devrait ressembler à ceci :
...
<[SUCCESS] ✅ quarkus project has been successfully generated in:
--> /Users/danieloh/Downloads/demo/hibernate-kotlin-example
...
Créer une nouvelle entité et un référentiel
Hibernate ORM with Panache permet aux développeurs de gérer des entités avec des modèles d’enregistrement actifs avec les avantages suivants :
- Génération automatique d’identifiants
- Pas besoin de getters/setters
- Méthodes statiques super utiles pour l’accès telles que
listAll()
etfind()
- Pas besoin de requêtes personnalisées pour les opérations de base (par exemple
Person.find
(“nom”, “daniel”))
Kotlin ne prend pas en charge l’ORM Hibernate avec Panache de la même manière que Java. Au lieu de cela, Quarkus permet aux développeurs d’intégrer ces fonctionnalités dans Kotlin en utilisant le companion
objet, comme illustré ci-dessous :
@Entity(name = "Person")
class Person : PanacheEntity() {
lateinit var name: String
}
Voici un exemple simple de la façon dont les développeurs peuvent implémenter PanacheRepository
pour accéder à l’entité :
@ApplicationScoped
class PersonRepository: PanacheRepository<Person> {
fun findByName(name: String) = find("name", name).firstResult()
}
Hyper simple ! Je vais maintenant vous montrer comment implémenter des ressources pour accéder aux données par les API RESTful.
Créer une ressource pour gérer les API RESTful
Quarkus prend entièrement en charge l’injection de contexte et de dépendance (CDI), qui permet aux développeurs d’injecter PersonRepository
pour accéder aux données (par exemple, findByName(name)
) dans les ressources. Par exemple:
@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}"
}
Exécuter et tester l’application
Comme toujours, exécutez votre application Quarkus en mode développeur :
$ cd hibernate-kotlin-example
$ quarkus dev
La sortie devrait ressembler à ceci :
...
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>
Les services Quarkus Dev mettent automatiquement en place un conteneur de base de données pertinent lorsque vous exécutez un environnement d’exécution de conteneur (par exemple, Docker ou Podman) et ajoutez une extension de base de données. Dans cet exemple, j’ai déjà ajouté le jdbc-postgresql
afin qu’un conteneur PostgreSQL s’exécute automatiquement lorsque le mode Quarkus Dev démarre. Trouvez la solution dans mon Référentiel GitHub.
Accéder à l’API RESTful (/hello
) pour récupérer les données par le name
paramètre. Exécutez ce qui suit curl
ligne de commande dans votre terminal local :
& curl localhost:8080/hello/Daniel
La sortie devrait ressembler à ceci :
Hello Daniel
Conclusion
Il s’agit d’une explication de base de la manière dont Quarkus permet aux développeurs de simplifier la mise en œuvre de JPA à l’aide des API de programmation Kotlin pour les applications Java réactives. Les développeurs peuvent également bénéficier de meilleures expériences de développement, telles que les services de développement et le codage en direct, tout en continuant à développer avec la programmation Kotlin dans Quarkus. Pour plus d’informations sur Quarkus, visitez le Site Web de Quarkus.