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