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

SpringBoot JDBC

Spring Boot JDBC fornisce strumenti per connettere l'applicazione con JDBC.

in Spring Boot JDBC, i Bean relativi al database (ad esempio DataSource, JdbcTemplate e NamedParameterJdbcTemplate ) verrà configurato e creato automaticamente durante l'avvio. Se vogliamo utilizzarli, possiamo iniettare automaticamente queste classi. Ad esempio:

@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

in application.properties nel file, configuriamo DataSource e pool di connessioni. Spring Boot predefinito sceglie tomcat pool.

pool di connessioni JDBC

pool di connessioni JDBCè una gestione multiplimeccanismo di richiesta di connessione database. pool di connessioni. Il modulo del pool di connessioni lo mantiene come uno strato sopra qualsiasi prodotto di驱动 JDBC standard.

può migliorare la velocità di accesso ai dati e ridurre il numero di connessioni database dell'applicazione. Può anche migliorare le prestazioni dell'applicazione. Il pool di connessioni esegue i seguenti compiti:

gestire le connessioni disponibili assegnare una nuova connessione chiudere la connessione

Nell'immagine sopra, ci sono client, un pool di connessioni(con quattro connessioni disponibili) e 1 sorgente di dati.

Nella prima immagine, tre client si sono collegati a connessioni diverse e le connessioni sono disponibili. Nella seconda immagine, il client 3 ha disconnesso la connessione e la connessione è disponibile.

quando il client completa il lavoro, rilascia la connessione e la connessione è disponibile per altri client.

HikariCP

Il pool di connessioni predefinito di SpringBoot 2 è HikariCP . Fornisce funzionalità pronte per l'uso aziendale e prestazioni migliori. HikariCP è un'implementazione di sorgente JDBC che fornisce il meccanismo di pool di connessioni.

se HikariCP esiste nel percorso delle classi, Spring Boot lo configurerà automaticamente. se non viene trovato HikariCP nel percorso delle classi, Spring Boot cercherà pool di connessioni JDBC di Tomcat. se presente nel percorso delle classi di Spring Boot, lo prenderà. Se né l'opzione 1 né l'opzione 2 sono disponibili, Spring Boot sceglierebbe Apache Commons DBCP2 come pool di connessioni JDBC.

Se non vogliamo utilizzare il pool di connessioni predefinito, possiamo anche configurare manualmente il pool di connessioni. Supponiamo che vogliamo utilizzare il pool di connessioni JDBC di Tomcat invece di HikariCP. Escluderemo HikariCP dipendenze, e aggiungi nel file pom.xml tomcat-jdbc dipendenze, come indicato di seguito.

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

Il metodo sopra descritto ci permette di utilizzare il pool di connessioni Tomcat senza dover scrivere @Configuration definire la classe in modo programmatically DataSource bean.

D'altra parte, possiamo anche saltare l'algoritmo di scansione del pool di connessioni utilizzato da Spring Boot. Possiamo aggiungere le proprietà nel file application.properties spring.datasource.type per specificare chiaramente il data source del pool di connessioni.

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

Abbiamo già configurato il pool di connessioni Tomcat. Ora, passeremo a application.properties Aggiungi alcune proprietà per ottimizzare le prestazioni e soddisfare determinati requisiti specifici.

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

Per connettersi al database MySQL, dobbiamo includere il driver JDBC nel percorso delle classi dell'applicazione:

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

Da questo punto in poi, in application.properties definito nel file datasoure proprietà.

Se si utilizza MySQL, utilizzare le seguenti proprietàdatabase:

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

Se si utilizza Oracle database, utilizzare le seguenti proprietà:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=system
spring.datasource.password=Password123
Attenzione: Per impostazione predefinita, Spring Boot 2 utilizza HikariCP come pool di connessioni database. Se non è presente HikariCP nel percorso delle classi, Spring Boot selezionerà il pool Tomcat predefinito.

Perché utilizzare Spring Boot JDBC?

L'esecuzione di Spring JDBC e Spring Boot JDBC è la stessa. In confronto a Spring JDBC, Spring Boot JBDC ha i seguenti vantaggi:

Spring Boot JDBC Spring JDBC
è sufficiente un spring-boot-starter-jdbc dipendenze.In Spring JDBC, è necessario configurare più dipendenze, ad esempio spring-jdbc e spring-context。
Se non viene mantenuto chiaramente, verrà configurato automaticamente il bean Datasource. Se non si desidera utilizzare il bean, è possibile impostare le proprietà spring.datasource.initialize impostato a false .In Spring JDBC, è necessario utilizzare XML o javaconfig Creazione di bean del database.
Non dobbiamo registrare il bean del modello perché Spring Boot lo registra automaticamente.È necessario registrare il bean del modello, ad esempio PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate .
Tutti gli script di inizializzazione del database memorizzati nei file .sql vengono eseguiti automaticamente.Se è stato creato qualsiasi script di inizializzazione del database (ad esempio, eliminazione o creazione di tabelle) in un file SQL, è necessario fornire questa informazione esplicitamente nella configurazione.

JDBC vs. Hibernate

JDBC Hibernate
JDBC è unaTecnologia.Hibernate è un ORM Frammento.
In JDBC, l'utente è responsabile della creazione e della chiusura delle connessioni.In Hibernate, il sistema di runtime è responsabile della creazione e della chiusura delle connessioni.
Non supporta il caricamento differito.Supporta il caricamento differito, offrendo migliori prestazioni.
Non supporta le relazioni (connessione tra due classi separate).Supporta le relazioni.

Nel prossimo capitolo, impareremo la connettività di MySQL nell'applicazione Spring Boot.