Articles

Marco Codes Live: Gavin King et Hibernate 6.3 [Vidéo]

Découvrez la vidéo de Marco Codes Live avec Gavin King et Hibernate 6.3! Une occasion unique d’en apprendre plus sur la dernière version de Hibernate.

Dans la vidéo ci-dessous, nous couvrirons la nouvelle version de Hibernate 6.3.

We’ll also look at the architecture of Hibernate 6.3 and how it fits into the larger Java ecosystem.

Dans la vidéo ci-dessous, nous couvrirons la nouvelle version Hibernate 6.3.

Avec ses capacités de traitement des annotations, il offre des approches alternatives aux frameworks tels que Spring Data JPA, et nous explorerons ces approches avec un peu de codage en direct.

Nous examinerons également l’architecture de Hibernate 6.3 et sa place dans le plus grand écosystème Java.

Hibernate 6.3 est une version très puissante et pratique qui offre des fonctionnalités supplémentaires par rapport à ses versions précédentes. Il intègre des technologies telles que Java Persistence API (JPA), Java Transaction API (JTA) et Java Database Connectivity (JDBC). Ces technologies sont très utiles pour le développement d’applications web et mobiles. De plus, Hibernate 6.3 offre une architecture modulaire et extensible qui permet aux développeurs de créer des applications plus flexibles et robustes.

Hibernate 6.3 est également livré avec une série d’outils et de bibliothèques qui aident les développeurs à créer des applications plus efficaces et à améliorer leur productivité. Les outils incluent des moteurs de recherche, des moteurs de mapping, des moteurs de validation et des moteurs de génération de code. Ces outils peuvent être utilisés pour créer des applications plus performantes et plus faciles à maintenir.

Enfin, Hibernate 6.3 offre une architecture extensible qui permet aux développeurs d’ajouter des fonctionnalités supplémentaires à leurs applications. Les développeurs peuvent ajouter des modules supplémentaires pour améliorer la performance et la fonctionnalité de leurs applications. Les développeurs peuvent également ajouter des plugins pour ajouter des fonctionnalités supplémentaires à leurs applications.

En résumé, Hibernate 6.3 est une version puissante et pratique qui offre une architecture modulaire et extensible qui permet aux développeurs de créer des applications plus flexibles et robustes. Il offre également une série d’outils et de bibliothèques qui aident les développeurs à créer des applications plus efficaces et à améliorer leur productivité. Enfin, il offre une architecture extensible qui permet aux développeurs d’ajouter des fonctionnalités supplémentaires à leurs applications.

Source de l’article sur DZONE

Enregistrer des Convertisseurs Spring en étendant son Interface.

En étendant l’interface, vous pouvez enregistrer des convertisseurs Spring pour faciliter la conversion des données entre différents formats.

Cet article est un guide étape par étape visant à démontrer une approche basée sur l’interface pour utiliser le système de conversion de type Spring.

The system is designed to be extensible, allowing developers to add their own custom type converters. In this article, we will demonstrate how to use the type conversion system in an interface-based approach.

Paragraph 1

Le système de conversion de type de Spring 3 introduit un package core.convert qui fournit un système de conversion de type général. Le système définit une SPI pour implémenter la logique de conversion de type et une API pour effectuer des conversions de type à l’exécution. Le système est conçu pour être extensible, ce qui permet aux développeurs d’ajouter leurs propres convertisseurs de type personnalisés. Dans cet article, nous allons démontrer comment utiliser le système de conversion de type dans une approche basée sur l’interface.

Paragraph 2

Le système de conversion de type Spring est basé sur l’interface ConversionService. Cette interface définit les méthodes pour convertir un objet d’un type à un autre. Le système fournit également une implémentation par défaut, DefaultConversionService, qui peut être utilisée pour effectuer des conversions simples. Cependant, si vous avez besoin de plus de contrôle sur la conversion, vous pouvez créer votre propre implémentation de ConversionService.

Paragraph 3

Une fois que vous avez créé votre implémentation de ConversionService, vous pouvez l’utiliser pour effectuer des conversions. Pour cela, vous devez créer une instance de ConversionService et l’utiliser pour convertir des objets d’un type à un autre. Vous pouvez également utiliser le système pour effectuer des tests unitaires sur votre code de conversion. Pour ce faire, vous pouvez créer une instance de ConversionService et l’utiliser pour tester le comportement de votre code de conversion. Vous pouvez également utiliser le système pour tester la précision des conversions effectuées par votre code.

Source de l’article sur DZONE

Mise en œuvre de la découverte de services avec Spring Cloud (2e partie)

Dans cette deuxième partie, nous allons voir comment mettre en œuvre la découverte de services avec Spring Cloud. Préparez-vous à apprendre comment configurer et déployer vos services !

Partie 2 de l’Article Spring Cloud: Comment Implémenter le Service Discovery (Partie 1)

Dans la première partie de cet article, Spring Cloud: Comment implémenter le service de découverte (Partie 1), nous avons vu les bases du Service Discovery dans le contexte de Spring Cloud. Nous avons vu que la composante Netflix OSS Eureka est toujours le choix principal. Dans ce post, nous allons discuter de certains sujets supplémentaires liés à Eureka, tels que :

API Java Client

API REST

Sécuriser le serveur de découverte et les services clients

Combiner le Service Discovery avec la Configuration Distribuée

Service Discovery : API Java Client

Dans les exemples de la première partie de cet article, l’enregistrement et le récupération des fonctionnalités étaient exécutés sous le capot et nous avons seulement vu les résultats des tests de l’architecture entière en appelant un point de terminaison REST client. Il existe également une manière d’interagir avec l’API Eureka de manière programmatique, en utilisant des appels de méthodes Java. Un choix possible serait d’utiliser la classe EurekaClient. Par exemple, si nous voulons obtenir toutes les instances d’un service identifié par un ID particulier, nous pourrions écrire le code suivant, supposant que nous avons un client implémenté comme une application Spring Boot exposant des services REST :

EurekaClient eurekaClient = new EurekaClient.Builder().build();

Applications applications = eurekaClient.getApplications(« SERVICE_ID »);

List instances = applications.getInstances();

Une fois que nous avons obtenu la liste des instances, nous pouvons parcourir cette liste et récupérer les informations dont nous avons besoin, telles que l’adresse IP et le port sur lesquels le service est en cours d’exécution. Nous pouvons également effectuer des opérations supplémentaires sur les instances, telles que la mise à jour des informations ou la suppression d’une instance.

Service Discovery : API REST

Eureka fournit également une API REST qui peut être utilisée pour interagir avec le serveur de découverte. Cette API est très similaire à l’API Java client, mais elle est plus adaptée aux scénarios où nous devons interagir avec le serveur de découverte depuis un environnement non-Java ou depuis un script. Par exemple, si nous voulons récupérer toutes les instances d’un service spécifique, nous pouvons appeler l’URL suivante :

http://:/eureka/apps/

Cette URL retournera une réponse JSON contenant toutes les informations relatives à ce service et à ses instances. Nous pouvons également effectuer des opérations supplémentaires sur les instances, telles que la mise à jour des informations ou la suppression d’une instance, en appelant des URL spécifiques.

Service Discovery : Sécurisation du serveur et des services clients

Enfin, il est important de noter que le serveur Eureka et les services clients doivent être sécurisés pour éviter toute attaque malveillante. Par exemple, nous pouvons configurer Eureka pour utiliser HTTPS pour sécuriser les communications entre le serveur et les clients. Nous pouvons également configurer Eureka pour authentifier les clients et leurs requêtes en utilisant un système d’authentification basé sur des jetons. De plus, il est possible de configurer Eureka pour

Source de l’article sur DZONE

Partie 2: Microservices avec Apache Camel et Quarkus

Dans cette partie, nous allons apprendre à créer des microservices avec Apache Camel et Quarkus. Nous verrons comment les deux outils peuvent être utilisés ensemble pour créer des applications modernes et performantes.

Exécution locale d’une application microservices basée sur Apache Camel et AWS SDK

Dans la première partie de cette série, nous avons vu une application de transfert d’argent simplifiée basée sur les microservices, mise en œuvre à l’aide des outils de développement Java Apache Camel et AWS SDK (Software Development Kit) et de Quarkus comme plate-forme d’exécution. Comme indiqué, il existe de nombreux scénarios de déploiement qui pourraient être envisagés pour exécuter la production d’une telle application; le premier et le plus simple consiste à l’exécuter localement de manière autonome. C’est le scénario que nous examinerons dans ce nouveau post.

Quarkus est capable d’exécuter vos applications de deux manières: en mode JVM (Java Virtual Machine) et en mode natif. Le mode JVM est la manière classique standard d’exécuter des applications Java. Ici, l’application en cours d’exécution n’est pas exécutée directement sur le système d’exploitation, mais dans un certain milieu d’exécution où des bibliothèques et des API Java sont intégrées et enveloppées. Ces bibliothèques et API peuvent être très volumineuses et elles occupent une partie spécifique de la mémoire appelée Resident Set Size (RSS). Pour en savoir plus sur le RSS et Quarkus (par opposition à la façon dont Spring Boot le gère), voir ici.

Lorsque vous exécutez votre application avec Quarkus en mode JVM, vous pouvez utiliser un outil appelé GraalVM pour compiler votre application en code natif. GraalVM est un outil open source qui permet de compiler des applications Java en code natif. Il prend en charge plusieurs langages, dont Java, JavaScript, Ruby, Python et R. GraalVM est capable de compiler votre application Java en code natif très rapidement, ce qui permet à votre application de s’exécuter plus rapidement et avec moins de consommation de mémoire. Il est également possible d’utiliser GraalVM pour compiler votre application en code natif et l’exécuter directement sur le système d’exploitation, sans passer par le mode JVM. Cela permet à votre application de fonctionner plus rapidement et avec une consommation de mémoire minimale.

Ainsi, grâce à l’utilisation du logiciel Quarkus et de GraalVM, vous pouvez facilement déployer votre application microservices-based money transfer sur votre système local. Vous pouvez également utiliser GraalVM pour compiler votre application en code natif et l’exécuter directement sur le système d’exploitation, ce qui permet à votre application de fonctionner plus rapidement et avec une consommation de mémoire minimale. Cela peut être très utile pour les applications qui nécessitent une exécution rapide et une consommation minimale de mémoire. De plus, vous pouvez également déployer votre application sur des plates-formes cloud telles que AWS ou Azure afin de bénéficier des avantages supplémentaires offerts par ces plates-formes.

Source de l’article sur DZONE

Spring Cloud: Comment Gérer Config. Microservices (2e Partie)

Dans cet article, nous allons poursuivre notre exploration de Spring Cloud et voir comment gérer la configuration des microservices. Préparez-vous à découvrir les dernières fonctionnalités de Spring Cloud !

Dans la première partie de cet article, nous avons vu comment configurer un scénario simple avec un serveur Spring Cloud Config et son client correspondant. Le serveur était configuré avec un profil natif et la configuration était stockée dans le classpath, dans un sous-dossier nommé config. La démo était composée d’une seule instance de serveur et de client.

Dans la deuxième partie, nous allons montrer comment configurer Spring Cloud Config pour se connecter et utiliser un dépôt Git externe. Puis, dans les prochaines sections, nous parlerons du rafraîchissement des données de configuration sans redémarrage des services.

## Configurer Spring Cloud Config pour se connecter à un dépôt Git externe

En tant qu’informaticien enthousiaste, je suis très intéressé par les nouvelles technologies et leurs applications. Dans cet article, je vais vous parler de l’utilisation d’un logiciel de configuration de Spring Cloud Config pour gérer les paramètres de votre application.

Tout d’abord, nous allons voir comment configurer un scénario simple avec un serveur Spring Cloud Config et son client correspondant. Le serveur est configuré avec un profil natif et la configuration est stockée dans le classpath, dans un sous-dossier nommé config. La démo est constituée d’une seule instance de serveur et de client.

Ensuite, nous verrons comment configurer Spring Cloud Config pour se connecter et utiliser un dépôt Git externe. Dans les sections suivantes, nous parlerons du rafraîchissement des données de configuration sans redémarrer les services. Pour ce faire, nous utiliserons le logiciel Spring Cloud Bus qui permet de publier des messages sur un bus de messages et de les diffuser à tous les clients connectés. Nous verrons également comment configurer le client pour qu’il puisse recevoir et traiter ces messages.

Enfin, nous verrons comment le logiciel Spring Cloud Config peut être utilisé pour gérer les paramètres de votre application. Nous verrons comment le serveur peut être configuré pour lire la configuration à partir d’une source externe, comme un dépôt Git, et comment le client peut être configuré pour récupérer la configuration à partir du serveur. Nous verrons également comment le logiciel peut être utilisé pour mettre à jour la configuration sans redémarrer les services.

Source de l’article sur DZONE

The AngularAndSpringWithMaps project has been converted from REST endpoints to a GraphQL interface. The project uses Spring GraphQL to provide the backend interface. The Angular frontend uses the Angular  HttpClient to post the requests to the backend.

GraphQL vs REST From an Architectural Perspective

REST Endpoints

REST calls retrieve objects with their children. For different root objects, separate REST calls are sent. These calls can accumulate with the number of different root objects that the frontend requests. With relationships between the objects, sequential calls become necessary.

Source de l’article sur DZONE

This is the perfect time to raise this point — just as Spring Native is coming to the forefront. Is it time to move to GraalVM? Spoiler: it depends. Yes, if you’re building serverless, probably no if you’re building pretty much anything else — with a few exceptions for some microservices.

Before I begin, I want to qualify that I’m talking about native image (SubstrateVM) which is what most people mean when they say GraalVM. That specific feature took over a much larger and more ambitious project that includes some amazing capabilities such as polyglot programming. GraalVM native images let us compile our Java projects to native code. It performs analysis and removes unnecessary stuff, it can reduce the size and startup time of a binary significantly. I’ve seen 10-20x improvement to startup time, that’s a lot. Ram usage is also much lower sometimes by a similar scale but usually not as significant.

Source de l’article sur DZONE

Many Spring Boot web applications require you to go beyond the usual REST endpoints and start accepting WebSocket connections. Meanwhile, plain JUnit tests have fallen out of fashion, and suddenly everyone is talking about the potential of Spock.

All these changes sound thrilling, and you’d like to try the novel approach.

Source de l’article sur DZONE