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

SpringBoot JDBC

Spring Boot JDBC fournissent des outils et des bibliothèques pour connecter l'application à une connexion JDBC.

Dans Spring Boot JDBC, les Beans liés à la base de données (par exemple DataSource, JdbcTemplate et NamedParameterJdbcTemplate ) sera configuré et créé automatiquement pendant le lancement. Si nous voulons les utiliser, nous pouvons les assembler automatiquement. Par exemple:

@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

dans application.properties dans le fichier, nous configurons DataSource et Pool de connexions. Spring Boot sélectionne par défaut dépendance pool.

Pool de connexions JDBC

Pool de connexions JDBCest une gestion plusieursmécanisme de demande de connexion de base de données. En d'autres termes, il promeut la réutilisation des connexions, c'est-à-dire le cache en mémoire des connexions de base de données, appelé Pool de connexions. Le module de pool de connexions le maintient comme une couche au-dessus de n'importe quel produit de pilote JDBC standard.

Il peut accélérer la vitesse d'accès aux données et réduire le nombre de connexions de base de données de l'application. Il peut également améliorer les performances de l'application. Le pool de connexions effectue les tâches suivantes:

gérer les connexions disponibles allouer une nouvelle connexion fermer la connexion

Dans l'image ci-dessus, il y a un pool de connexions(ayant quatre connexions disponibles) et 1un source de données.

Dans la première image, trois clients se connectent à différentes connexions, et les connexions sont disponibles. Dans la deuxième image, le client3La connexion a été interrompue et cette connexion est disponible.

Lorsque le client termine son travail, il libère cette connexion, et cette connexion est disponible pour d'autres clients.

HikariCP

SpringBoot 2Le pool de connexions par défaut dans HikariCP Il offre des fonctionnalités prêtes à l'emploi pour les entreprises et une meilleure performance. HikariCP est une implémentation de source de données JDBC, qui fournit un mécanisme de pool de connexions.

Si HikariCP est présent dans le chemin de classes, Spring Boot le configure automatiquement. si HikariCP n'est pas trouvé dans la classe path, Spring Boot le recherchera. le pool de connexions JDBC Tomcat. si elle se trouve dans la classe path de Spring Boot. Si les deux options ci-dessus ne sont pas disponibles, Spring Boot choisit Apache Commons DBCP2 comme pool de connexions JDBC.

Si nous ne voulons pas utiliser le pool de connexions par défaut, nous pouvons également configurer manuellement le pool de connexions. Supposons que nous voulions utiliser le pool de connexions JDBC Tomcat plutôt que HikariCP. Nous allons exclure HikariCP et ajouter dans le fichier pom.xml dépendance-jdbc dépendances, comme indiqué ci-dessous.

<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>

Ces méthodes nous permettent d'utiliser le pool de connexions Tomcat sans avoir à écrire @Configuration classe et la définir de manière programmée DataSource bean.

D'autre part, nous pouvons également ignorer l'algorithme de balayage du pool de connexions utilisé par Spring Boot. Nous pouvons ajouter des propriétés dans le fichier application.properties spring.datasource.type pour spécifier explicitement le fournisseur de données du pool de connexions.

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

Nous avons déjà configuré le pool de connexions Tomcat. Maintenant, nous allons dans application.properties d'ajouter certaines propriétés pour optimiser ses performances et répondre à certaines exigences spécifiques.

spring.datasource.tomcat.initial-size=20
spring.datasource.tomcat.max-wait=25000
spring.datasource.tomcat.max-active=70
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=9
spring.datasource.tomcat.default-auto-commit=true

Pour se connecter à la base de données MySQL, nous devons inclure le pilote JDBC dans le chemin de classe de l'application:

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

Par la suite, dans application.properties défini dans le datasoure propriétés.

Si vous utilisez MySQL, utilisez les propriétés suivantesbase de données:

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

Si vous utilisez Oracle base de données, utilisez les propriétés suivantes:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=system
spring.datasource.password=Password123
Attention: Par défaut, Spring Boot 2Utilisez HikariCP comme pool de connexions de base de données. Si HikariCP n'est pas trouvé dans le chemin de classe, Spring Boot choisira par défaut le pool tomcat.

Pourquoi utiliser Spring Boot JDBC ?

L'implémentation de Spring JDBC et Spring Boot JDBC est la même. Par rapport à Spring JDBC, Spring Boot JBDC a les avantages suivants:

Spring Boot JDBC Spring JDBC
seulement besoin d'un spring-boot-starter-jdbc dépendances。Dans Spring JDBC, il est nécessaire de configurer plusieurs dépendances, telles que spring-jdbc et spring-context。
Si elle n'est pas explicitement maintenue, elle se configure automatiquement le bean Datasource. Si vous ne souhaitez pas utiliser le bean, vous pouvez définir les propriétés spring.datasource.initialize réglé sur false .Dans Spring JDBC, il est nécessaire d'utiliser XML ou javaconfig Création de Bean de base de données.
Nous n'avons pas besoin d'enregistrer le bean du modèle, car Spring Boot enregistre automatiquement le bean.Il est nécessaire d'enregistrer le bean du modèle, par exemple PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate .
Tous les scripts d'initialisation de base de données stockés dans les fichiers .sql sont exécutés automatiquement.Si un script d'initialisation de base de données (par exemple, suppression ou création de tables) a été créé dans un fichier SQL, il faut fournir cette information explicitement dans la configuration.

JDBC vs. Hibernate

JDBC Hibernate
JDBC est unTechnologie.Hibernate est un ORM Cadre.
Dans JDBC, l'utilisateur est responsable de la création et de la fermeture des connexions.Dans Hibernate, le système d'exécution est responsable de la création et de la fermeture des connexions.
Il ne prend pas en charge le chargement différé.Il prend en charge le chargement différé pour offrir une meilleure performance.
Il ne prend pas en charge les associations (liaison entre deux classes distinctes).Il prend en charge les associations.

Dans la partie suivante, nous allons apprendre la connectivité MySQL dans l'application Spring Boot.