En la primera parte de este artículo, aprendimos cómo mejorar el rendimiento de nuestras aplicaciones, reemplazando Tomcat por Undertow, que es un servidor web de alto rendimiento, además de habilitar y configurar la compresión de datos, para reducir el tamaño de las respuestas HTTP que viajan por la red.
Ahora hablaremos sobre cómo mejorar el rendimiento de la aplicación Spring Boot en la parte de persistencia, pero primero debemos entender qué son JPA, Hibernate y Hikari. ].
JPA o Java Persistence API, que luego pasó a llamarse Jakarta Persistence, es un estándar del lenguaje Java que describe un interfaz para marcos de persistencia de datos
La especificaciónJPA define el mapeo relacional de objetos internamente, en lugar de depender de implementaciones de mapeo específicas del proveedor.
HibernarHibernate es uno de los marcos ORM que realiza la implementación concreta de la especificación JPA. es decir, si esta especificación describe la necesidad de métodos para persist, eliminar, actualizar y obtener datos, la persona que realmente creará estos comportamientos es Hibernate, así como EclipseLink , que es otro ORM.
HikariHikari es un framework de agrupación de conexiones, que se encarga de gestionar las conexiones a la base de datos, manteniéndolas abiertas para que puedan ser reutilizadas, es decir, es un caché de conexiones para futuras solicitudes, agilizando el acceso a la base de datos y reduciendo el número de nuevas conexiones a crear.
Configurando Hikari, JPA e HibernateUsando 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: trueUsando propiedades.de.aplicación:
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: trueAhora hagamos un breve resumen de las opciones:
Hikari
grupo de conexiones vendrá con auto-commit deshabilitado.
pool. Es preferible establecer un tiempo de espera corto para fallar rápidamente y devolver un mensaje de error, en lugar de mantener al cliente esperando indefinidamente.
pool, incluidas las conexiones inactivas y en uso, que determina el número máximo de conexiones activas a la base de datos. Si el grupo alcanza este límite y no hay conexiones inactivas, las llamadas a getConnection() se bloquearán durante hasta connectionTimeout milisegundos antes de fallar.
pool y aparece principalmente en las consolas de administración de registro y JMX para identificar a piscinas y sus configuraciones.
OSIV (Abrir sesión en vista) está habilitado, se mantiene una sesión durante toda la solicitud, incluso sin la anotación @Transactional. Esto puede causar problemas de rendimiento, como falta de respuestas de la aplicación, ya que la sesión mantiene la conexión a la base de datos hasta el final de la solicitud.
Hibernate en relación con el esquema de la base de datos. Puede tener los siguientes valores:
Hibernate que hemos deshabilitado la confirmación automática de proveedores (PostgreSQL, MySQL, etc.). Esto afecta el rendimiento porque Hibernar necesitará obtener una conexión del grupo para saber si auto-commit está habilitado o no. , por cada transacción que realiza.
Hikari como confirmación automática y tamaño del grupo , los de JPA y Hibernate como OSIV (Abrir sesión en vista) e informar que hemos deshabilitado la confirmación automática de proveedores.
En la siguiente parte hablaremos sobre las excepciones y cómo se pueden configurar para ahorrar recursos de laJVM (Java Virtual Machine).
Referencias:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3