Dans la première partie de cet article, nous avons appris comment améliorer les performances de nos applications, en remplaçant Tomcat par Undertow, qui est un serveur Web hautes performances, en plus d'activer et de configurer la compression des données, pour réduire la taille des réponses HTTP qui transitent sur le réseau.
Maintenant, nous allons parler de la façon d'améliorer les performances de l'application Spring Boot dans la partie persistance, mais nous devons d'abord comprendre ce que JPA, Hibernate et Hikari.
JPA ou Java Persistence API, qui a ensuite été renommé Jakarta Persistence, est un standard de langage Java qui décrit un langage commun interface pour les frameworks de persistance des données
La spécificationJPA définit le mappage relationnel d'objet en interne, plutôt que de s'appuyer sur des implémentations de mappage spécifiques au fournisseur.
HibernerHibernate est l'un des frameworks ORM qui réalise l'implémentation concrète de la spécification JPA. c'est-à-dire que si cette spécification décrit la nécessité de méthodes pour persist, remove, mettre à jour et récupérer des données, la personne qui créera réellement ces comportements est Hibernate, ainsi que EclipseLink , qui est un autre ORM.
HikariHikari est un framework de regroupement de connexions, qui est chargé de gérer les connexions à la base de données, en les gardant ouvertes afin qu'elles puissent être réutilisées, c'est-à-dire il s'agit d'un cache de connexions pour les requêtes futures, rendant l'accès à la base de données plus rapide et réduisant le nombre de nouvelles connexions à créer.
Configuration de Hikari, JPA et HibernateUtilisation d'application.yml :
spring: hikari: auto-commit: false connection-timeout: 250 max-lifetime: 600000 maximum-pool-size: 20 minimum-idle: 10 pool-name: master jpa: open-in-view: false show-sql: true hibernate: ddl-auto: none properties: hibernate.connection.provider_disables_autocommit: true hibernate.generate_statistics: trueUtilisation de application.properties :
spring: hikari: auto-commit: false connection-timeout: 250 max-lifetime: 600000 maximum-pool-size: 20 minimum-idle: 10 pool-name: master jpa: open-in-view: false show-sql: true hibernate: ddl-auto: none properties: hibernate.connection.provider_disables_autocommit: true hibernate.generate_statistics: trueDonnons maintenant un bref résumé des options :
Hikari
pool de connexions sera accompagnée de auto-commit désactivé.
pool. Il est préférable de définir un délai d'attente court pour échouer rapidement et renvoyer un message d'erreur, plutôt que de faire attendre le client indéfiniment.
pool, y compris les connexions inactives et en cours d'utilisation, déterminant le nombre maximum de connexions actives à la base de données. Si le pool atteint cette limite et qu'il n'y a aucune connexion inactive, les appels à getConnection() seront bloqués jusqu'à connectionTimeout millisecondes avant d'échouer.
pool et apparaît principalement dans les consoles de gestion de registre et JMX pour identifier pools et leurs configurations.
OSIV (Ouvrir la session en vue) est activé, une session est maintenue tout au long de la requête, même sans l'annotation @Transactional. Cela peut entraîner des problèmes de performances, tels qu'un manque de réponses de l'application, car la session maintient la connexion à la base de données jusqu'à la fin de la requête.
Hibernate par rapport au schéma de la base de données. Il peut avoir les valeurs suivantes :
Hibernate que nous avons désactivé la auto-commit des fournisseurs (PostgreSQL, MySQL, etc.). Cela a un impact sur les performances, car Hibernate devra obtenir une connexion du pool pour savoir si la auto-commit est activée ou non. , pour chaque transaction qu'il effectue.
Hikari tels que commit automatique et taille du pool , ceux de JPA et Hibernate comme OSIV (Ouvrir la session en vue) et informer que nous avons désactivé la la validation automatique des fournisseurs.
Dans la partie suivante, nous parlerons des exceptions et de la manière dont elles peuvent être configurées, pour économiser les ressources de laJVM (Machine virtuelle Java).
Références :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3