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

SpringBoot JDBC

Spring Boot JDBC fornece ferramentas para conectar o aplicativo com a conexão JDBC.

No Spring Boot JDBC, os Beans relacionados ao banco de dados (por exemplo DataSource, JdbcTemplate e NamedParameterJdbcTemplate ) será configurado e criado automaticamente durante o início. Se quisermos usá-los, podemos injetar automaticamente essas classes. Por exemplo:

@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

em application.properties no arquivo, configuramos DataSource e conexão pool. O Spring Boot padrão escolhe dependência pool.

pool de conexões JDBC

pool de conexões JDBCé um tipo de gestão muitosmecanismo de solicitação de conexão de banco de dados. Em outras palavras, promove a reutilização de conexões, ou seja, o cache de memória de conexão de banco de dados, chamado conexão pool. O módulo de conexão pool mantém isso como uma camada sobre qualquer produto de driver JDBC padrão.

Isso pode melhorar a velocidade de acesso aos dados e reduzir o número de conexões de banco de dados do aplicativo. Também pode melhorar o desempenho do aplicativo. A conexão pool executa as seguintes tarefas:

gerenciar conexões disponíveis atribuir nova conexão fechar conexão

No gráfico acima, há um pool de conexões(com quatro conexões disponíveis) e 1um provedor de dados.

Na primeira figura, três clientes conectaram-se a diferentes conexões e as conexões estão disponíveis. Na segunda figura, o cliente3A conexão foi desligada e esta conexão está disponível.

Quando o cliente completa o trabalho, ele liberará a conexão e esta conexão estará disponível para outros clientes.

HikariCP

SpringBoot 2A conexão pool padrão é HikariCP Ele oferece funcionalidades prontas para empresas e melhor desempenho. O HikariCP é uma implementação de provedor de dados JDBC, que fornece um mecanismo de pool de conexões.

Se o HikariCP estiver na classe path, o Spring Boot configurará automaticamente. Se o HikariCP não for encontrado no class path, o Spring Boot procurará pool de conexões JDBC Tomcat. se estiver na classe path do Spring Boot, a recolhe. Se as duas opções acima não estiverem disponíveis, o Spring Boot escolhe Apache Commons DBCP2 como pool de conexões JDBC.

Se não quisermos usar o pool de conexões padrão, também podemos configurar manualmente o pool de conexões. Suponhamos que queremos usar o pool de conexões JDBC Tomcat em vez do HikariCP. Vamos excluir HikariCP e adicionar no arquivo pom.xml dependência-jdbc dependências, conforme mostrado a seguir.

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

Os métodos acima nos permitem usar o pool de conexões Tomcat sem a necessidade de escrever @Configuration definir a classe de forma programática DataSource bean.

Por outro lado, também podemos omitir o algoritmo de varredura de pool de conexões utilizado pelo Spring Boot. Podemos adicionar propriedades no arquivo application.properties spring.datasource.type para especificar claramente o provedor de dados do pool de conexões.

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

Já configuramos o pool de conexões Tomcat. Agora, vamos application.properties adicionar algumas propriedades para otimizar seu desempenho e atender a certas necessidades específicas.

spring.datasource.tomcat.initial-tamanho=20
spring.datasource.tomcat.max-espera=25000
spring.datasource.tomcat.max-ativo=70
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=9
spring.datasource.tomcat.default-auto-commit=true

Para conectar-se ao banco de dados MySQL, precisamos incluir o driver JDBC no caminho da classe do aplicativo:

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

A partir daí, em application.properties definido no arquivo datasoure propriedades。

Se estiver usando MySQL, use as seguintes propriedadesbanco de dados:

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

Se estiver usando Oracle banco de dados, use as seguintes propriedades:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=system
spring.datasource.password=Password123
Atenção: Pelo padrão, o Spring Boot 2Usa o HikariCP como pool de conexões de banco de dados. Se não houver HikariCP no caminho da classe, o Spring Boot padrão escolherá o pool Tomcat.

Por que usar o Spring Boot JDBC?

A implementação do Spring JDBC e do Spring Boot JDBC é a mesma. Comparado ao Spring JDBC, o Spring Boot JBDC tem os seguintes benefícios:

Spring Boot JDBC Spring JDBC
só é necessário um spring-boot-starter-jdbc dependências。No Spring JDBC, é necessário configurar várias dependências, por exemplo spring-jdbc e spring-context。
Se não for especificamente mantido, ele configurará automaticamente o bean Datasource. Se não desejar usar o bean, pode definir as propriedades spring.datasource.initialize definido como false .No Spring JDBC, deve-se usar XML ou javaconfig Criação de Bean de Banco de Dados
Não precisamos registrar o bean do template, porque o Spring Boot registra automaticamente o bean.É necessário registrar o bean do template, por exemplo PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate .
Todos os scripts de inicialização do banco de dados armazenados em arquivos .sql serão executados automaticamente.Se qualquer script de inicialização do banco de dados foi criado em arquivo SQL (por exemplo, exclusão ou criação de tabelas),则需要明确在配置中提供此信息。

JDBC vs. Hibernate

JDBC Hibernate
JDBC é umTécnica.Hibernate é um ORM Framework.
No JDBC, o usuário é responsável por criar e fechar conexões.No Hibernate, o sistema de tempo de execução é responsável por criar e fechar conexões.
Ele não suporta carregamento pósonto.Ele suporta carregamento pósonto, proporcionando melhor desempenho.
Ele não suporta associação (conexão entre duas classes separadas).Ele suporta associação.

Na próxima parte, vamos aprender sobre a conectividade do MySQL em aplicações Spring Boot.