example connecting conexion conectar con application java mysql jpa spring-boot

java - connecting - spring boot jdbc example



La conexión a Db muere después de> 4<24 en resorte de arranque jpa hibernate (1)

La forma más fácil es especificar la propiedad autoReconnect en la url JDBC, aunque este no es el enfoque recomendado.

spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true

Esto puede dar problemas cuando tienes una conexión activa y durante una transacción sucede algo y una reconexión va a suceder. No dará problemas cuando la conexión se valida al inicio de la transacción y se adquiere una nueva conexión al inicio.

Sin embargo, probablemente sea mejor habilitar la validación de sus conexiones durante la vida útil de su aplicación. Para esto puede especificar varias propiedades .

Primero comience especificando la cantidad máxima de conexiones que permite para el conjunto. (Para leer sobre cómo determinar el máximo tamaño de la piscina, lea this ).

spring.datasource.max-active=10

También es posible que desee especificar el número de conexiones iniciales

spring.datasource.initial-size=5

A continuación, desea especificar el número mínimo y máximo de conexiones inactivas.

spring.datasource.max-idle=5 spring.datasource.min-idle=1

Para validar la conexión, debe especificar una consulta de validación y cuándo validar. Como quiera validar periódicamente, en lugar de cuando se recupera una conexión del grupo (esto para evitar conexiones rotas en su grupo).

spring.datasource.test-while-idle=true spring.datasource.test-on-borrow=true spring.datasource.validation-query=SELECT 1

Ahora que también está validando mientras una conexión está inactiva, necesita especificar con qué frecuencia desea ejecutar esta consulta para las conexiones y cuando una conexión se considera inactiva.

spring.datasource.time-between-eviction-runs-millis=5000 (this is the default) spring.datasource.min-evictable-idle-time-millis=60000 (this is also default)

Todo esto debería desencadenar la validación de sus conexiones (inactivas) y cuando se produce una excepción o pasa el período de inactividad, sus conexiones se eliminarán del grupo.

Suponiendo que está utilizando Tomcat JDBC como el grupo de conexiones, this es una buena lectura de qué y cómo configurarlo.

Tengo una aplicación que usa Spring-boot, jpa-hiberanate con mysql. Recibo este registro de errores

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 56,006,037 milliseconds ago. The last packet sent successfully to the server was 56,006,037 milliseconds ago. is longer than the server configured value of ''wait_timeout''. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property ''autoReconnect=true'' to avoid this problem.

Aquí está mi application.properties

# DataSource settings: set here configurations for the database connection spring.datasource.url = jdbc:mysql://localhost:3306/test spring.datasource.username = test spring.datasource.password = test spring.datasource.driverClassName = com.mysql.jdbc.Driver # Specify the DBMS spring.jpa.database = MYSQL # Show or not log for each sql query spring.jpa.show-sql = true # Hibernate settings are prefixed with spring.jpa.hibernate.* spring.jpa.hibernate.ddl-auto = update spring.jpa.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy

Para resolver este problema, puedo usar

spring.datasource.testOnBorrow=true spring.datasource.validationQuery=SELECT 1

Pero comprobé que no es recommended . Así que, ¿alguien puede sugerirme qué debo hacer para superar este error?