Spring Boot se integra con una serie de tecnologías para recopilar, transmitir y procesar datos, tanto SQL como NoSQL.
Bases de datos SQL
Spring Framework proporciona soporte integral para trabajar con bases de datos SQL, que van desde el acceso directo a JDBC usando JdbcTemplate hasta tecnologías completas de "mapeo relacional de objetos" como Hibernate. Spring Data proporciona un nivel adicional de funcionalidad: crear implementaciones de Repository directamente desde interfaces y usar convenciones para generar consultas a partir de nombres de métodos.
Configurando fuente de datos
La interfaz Java javax.sql.DataSource proporciona un método estándar para trabajar con conexiones de bases de datos. Tradicionalmente, una "Fuente de datos" utiliza una dirección URLjunto con algunas credenciales para establecer una conexión a la base de datos.
Soporte para bases de datos integradas
A menudo es más conveniente desarrollar aplicaciones utilizando la base de datos residente incorporada. Obviamente, las bases de datos residentes no proporcionan almacenamiento persistente. Debe completar la base de datos cuando se inicia la aplicación y estar preparado para eliminar datos cuando se cierra la aplicación.
Spring Boot puede configurar automáticamente bases de datos integradas H2, HSQL y Derby. No es necesario que proporcione ninguna URL de conexión. Solo necesita agregar una dependencia de compilación en la base de datos integrada que desea utilizar. Si hay varias bases de datos integradas en la ruta de clase, establezca la propiedad de configuración spring.datasource.embedded-database-connection para controlar cuál se usa. Establecer la propiedad en none deshabilita la configuración automática de la base de datos integrada.
Si utiliza esta función en sus pruebas, puede observar que todo el conjunto de pruebas reutiliza la misma base de datos, independientemente del número de contextos de aplicación que utilice. Si desea asegurarse de que cada contexto tenga una base de datos integrada independiente, debe establecer spring.datasource.generate-unique-name en true.
Por ejemplo, las dependencias POM típicas tendrían este aspecto:
<dependencia>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependencia>
<dependencia>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<alcance>tiempo de ejecución</scope>
</dependencia>
spring-jdbc. En este ejemplo, se activa transitivamente a través de
spring-boot-starter-data-jpa.
DB_CLOSE_ON_EXIT=FALSE para esto. Si está utilizando HSQLDB, debe asegurarse de que no se utilice
shutdown=true. Deshabilitar la función de cierre automático de la base de datos permite a Spring Boot controlar cuándo se cierra la base de datos, garantizando así que ocurra cuando ya no sea necesario acceder a la base de datos.
Conectarse a la base de datos de producción
Las conexiones de bases de datos de producción también se pueden configurar automáticamente utilizando la agrupación DataSource.
Configuración de fuente de datos
La configuración de DataSource está controlada por propiedades de configuración externas en spring.datasource.*. Por ejemplo, podría declarar la siguiente sección en application.properties:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.nombredeusuario=dbuser
spring.datasource.password=dbpass
primavera:
fuente de datos:
URL: "jdbc:mysql://localhost/prueba"
nombre de usuario: "dbuser"
contraseña: "dbpass"
spring.datasource.url. De lo contrario, Spring Boot intentará configurar automáticamente la base de datos integrada.
spring.datasource.driver-class-name.
DataSource debemos asegurarnos de que haya una clase
Driver válida, por lo que verificamos Para ello antes de hacer algo. En otras palabras, si configura
spring.datasource.driver-class-name=com.mysql.jdbc.Driver, entonces esta clase debería poder cargarse.
Para obtener más información sobre las opciones admitidas, consulte DataSourceProperties. Estas son opciones estándar que funcionan independientemente de la implementación real. También puede ajustar los parámetros específicos de la implementación utilizando el prefijo apropiado (spring.datasource.hikari.*, spring.datasource.tomcat.*, spring. fuente de datos .dbcp2.* y spring.datasource.oracleucp.*). Para obtener más información, consulte la documentación de la implementación del grupo de conexiones que está utilizando.
Por ejemplo, si utiliza grupo de conexiones Tomcat, Puedes configurar muchos ajustes adicionales, como se muestra en el siguiente ejemplo:
spring.datasource.tomcat.max-wait=10000
primavera.datasource.tomcat.max-active=50
spring.datasource.tomcat.test-on-borrow=true
spring:
datasource:
tomcat:
max-wait: 10000
max-active: 50
test-on-borrow: true
Este código configurará el grupo para que espere 10 000 ms antes de generar una excepción si la conexión no está disponible, limitará el número máximo de conexiones a 50 y verificará si hay una conexión antes de tomarla prestada del grupo.
Grupos de conexiones admitidos
Spring Boot utiliza el siguiente algoritmo para seleccionar una implementación específica:
-
Preferimos HikariCP por su rendimiento y paralelismo. Si es posible utilizar HikariCP, siempre lo elegimos.
-
De lo contrario, si el grupo
DataSourcede Tomcat está disponible, se utiliza -
Si esto no está disponible, pero Commons DBCP2 está disponible, úselo.
-
Si no se pueden usar HikariCP, Tomcat y DBCP2, pero Oracle UCP está disponible, entonces lo usamos.
spring-boot-starter-jdbc o
spring-boot-starter-data-jpa, automáticamente obtendrás una dependencia de
HikariCP.
Puede omitir este algoritmo por completo y especificar el grupo de conexiones que se utilizará configurando la propiedad spring.datasource.type. Esto es especialmente importante si la aplicación se ejecuta en un contenedor Tomcat, ya que tomcat-jdbc se proporciona de forma predeterminada.
Siempre se pueden configurar grupos de conexiones adicionales manualmente usando DataSourceBuilder. Si define su propio bean DataSource, no habrá configuración automática. DataSourceBuilder admite los siguientes grupos de conexiones:
-
HikariCP
-
Grupo fuente
Datasourcea través de Tomcat -
Comunes DBCP2
-
Oracle UCP y
OracleDataSource -
SimpleDriverDataSourcede Spring Framework -
JdbcDataSourcede H2 -
PGSimpleDataSourcede PostgreSQL -
C3P0
Conexión a DataSource mediante JNDI
Si está implementando su aplicación Spring Boot en un servidor de aplicaciones, es posible que necesite configurar y administrar el origen de datos utilizando la funcionalidad integrada del servidor de aplicaciones y acceder a él a través de JNDI.
La propiedad spring.datasource.jndi-name se puede utilizar como alternativa a spring.datasource.url, spring.datasource.username y properties spring.datasource.password para proporcionar acceso a DataSource desde una ubicación específica a través de JNDI. Por ejemplo, la siguiente sección en application.properties muestra cómo puede acceder al DataSource definido en el servidor JBoss AS:
spring.datasource.jndi-name=java:jboss/datasources/customers
spring:
datasource:
jndi-name: "java:jboss/datasources/customers
GO TO FULL VERSION