English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SpringBoot JDBC

Spring Boot JDBC proporciona herramientas para conectar la aplicación con JDBC y bibliotecas.

En Spring Boot JDBC, los Bean relacionados con la base de datos (por ejemplo DataSource, JdbcTemplate y NamedParameterJdbcTemplate ) se configurará y creará automáticamente durante el inicio. Si queremos usarlos, podemos inyectar estos objetos automáticamente. Por ejemplo:

@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

en application.properties en el archivo, configuramos DataSource y Pool de conexiones. Spring Boot selecciona predeterminadamente dependencia de tomcat pool.

pool de conexiones JDBC

pool de conexiones JDBCes una gestión múltiplesmecanismo de solicitud de conexión de base de datos. En otras palabras, promueve el reuso de conexiones, es decir, el caché en memoria de conexiones de base de datos, llamado Pool de conexiones. El módulo de pool de conexiones lo mantiene como una capa sobre cualquier producto de controlador JDBC estándar.

Puede aumentar la velocidad de acceso a datos y reducir el número de conexiones de base de datos de la aplicación. También puede mejorar el rendimiento de la aplicación. El pool de conexiones realiza las siguientes tareas:

administrar conexiones disponibles asignar nueva conexión cerrar conexión

En la imagen superior, hay clientes, un pool de conexiones(con cuatro conexiones disponibles) y 1fuente de datos.

En la primera imagen, tres clientes conectaron diferentes conexiones y las conexiones están disponibles. En la segunda imagen, el cliente3La conexión se ha desconectado y está disponible.

Al finalizar el trabajo del cliente, liberará la conexión y esta estará disponible para otros clientes.

HikariCP

SpringBoot 2La conexión pool predeterminada de HikariCP Ofrece funciones listas para empresas y mejor rendimiento. HikariCP es una implementación de fuente de datos JDBC, que proporciona un mecanismo de pool de conexiones.

Si HikariCP está en la ruta de clases, Spring Boot lo configurará automáticamente. si no se encuentra HikariCP en la clasepath, Spring Boot lo buscará. pool de conexiones JDBC Tomcat. si está en la clasepath de Spring Boot, lo recoge. Si las dos opciones anteriores no están disponibles, Spring Boot elige Apache Commons DBCP2 como pool de conexiones JDBC.

Si no queremos usar el pool de conexiones predeterminado, también podemos configurar manualmente el pool de conexiones. Supongamos que queremos usar el pool de conexiones JDBC Tomcat en lugar de HikariCP. Vamos a excluir HikariCP dependencia de HikariCP, y agregar a pom.xml dependencia de tomcat-jdbc dependencias, como se muestra a continuación.

<dependency>
<groupId>org.springframework.boot/<groupId>
<artifactId>spring-boot-starter-data-jpa</ artifactId >
<exclusions>
<exclusion>
<groupId>com.zaxxer/<groupId>
<artifactId>HikariCP/ artifactId >
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</<groupId>
<artifactId>tomcat-jdbc</artifactId>
<version>9.0.10</version>
</dependency>
<dependency>
<groupId>com.h2database</<groupId>
<artifactId>h2</artifactId>
<version>1.4.9</version>
<socpe>runtime</scoope>
</dependency>

Estos métodos nos permiten utilizar el pool de conexiones Tomcat sin necesidad de escribir @Configuration clase y definir de manera programática DataSource bean.

Por otro lado, también podemos omitir el algoritmo de escaneo de pool de conexiones utilizado por Spring Boot. Podemos agregar propiedades en el archivo application.properties spring.datasource.type para especificar claramente el origen de datos del pool de conexiones.

Spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

Ya hemos configurado el pool de conexiones Tomcat. Ahora, en application.properties se añaden algunas propiedades para optimizar su rendimiento y satisfacer ciertos requisitos específicos.

spring.datasource.tomcat.initial-tamaño=20
spring.datasource.tomcat.max-esperar=25000
spring.datasource.tomcat.max-activo=70
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=9
spring.datasource.tomcat.default-auto-commit=true

Para conectarse a la base de datos MySQL, necesitamos incluir el controlador JDBC en la ruta de clase de la aplicación:

<!-- controlador JDBC MySQL -->
<dependency>
<groupId>mysql</<groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

A partir de entonces, en application.properties definido en el archivo datasoure propiedades。

Si se utiliza MySQL, utilice las siguientes propiedadesBase de datos:

spring.datasource.url=jdbc:mysql://192.168.1.4:3306/test
spring.datasource.username=w3codebox
spring.datasource.password=password

Si se utiliza Oracle Base de datos, utilice las siguientes propiedades:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=sistema
spring.datasource.password=Contraseña123
Nota: Por defecto, Spring Boot 2Se utiliza HikariCP como pool de conexiones de base de datos. Si no hay HikariCP en la ruta de clase, Spring Boot seleccionará por defecto el pool de tomcat.

¿Por qué usar Spring Boot JDBC?

La implementación de Spring JDBC y Spring Boot JDBC es la misma. En comparación con Spring JDBC, Spring Boot JBDC tiene los siguientes beneficios:

Spring Boot JDBC Spring JDBC
sólo se necesita spring-boot-starter-jdbc dependencias。En Spring JDBC, se necesitan configurar varios dependencias, por ejemplo spring-jdbc y spring-context。
Si no se mantiene claramente, se configurará automáticamente el bean Datasource. Si no se desea usar el bean, se puede establecer la propiedad spring.datasource.initialize establecido en false .En Spring JDBC, debe usarse XML o javaconfig Crear Bean de base de datos.
No necesitamos registrar el bean de plantilla, porque Spring Boot se registra automáticamente el bean.Debe registrarse el bean de plantilla, por ejemplo PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate .
Todos los scripts de inicialización de base de datos almacenados en archivos .sql se ejecutarán automáticamente.Si se creó cualquier script de inicialización de base de datos en archivos SQL (por ejemplo, eliminación o creación de tablas),则需要显式提供此信息在配置中。

JDBC vs. Hibernate

JDBC Hibernate
JDBC es unTécnica.Hibernate es un ORM Marco.
En JDBC, el usuario es responsable de crear y cerrar conexiones.En Hibernate, el sistema de tiempo de ejecución es responsable de crear y cerrar conexiones.
No soporta la carga diferida.Soporta la carga diferida, lo que proporciona mejor rendimiento.
No soporta asociaciones (conexión entre dos clases separadas).Soporta asociaciones.

En la próxima parte, aprenderemos la conectividad de MySQL en aplicaciones de Spring Boot.