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

SpringBoot JDBC

Spring Boot JDBC предоставляет инструменты и библиотеки для подключения приложения к JDBC.

в Spring Boot JDBC, с Bean, связанными с базами данных (например DataSource, JdbcTemplate и NamedParameterJdbcTemplate ) будут автоматически настроены и созданы в процессе запуска. Если мы хотим использовать их, мы можем автоматически装配 эти классы. Например:

@Autowired
JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate jdbcTemplate;

в application.properties в файле, мы настроили DataSource и Pool соединений. По умолчанию Spring Boot выбирает tomcat pool.

JDBC соединение pool

JDBC соединение poolявляется типом управления несколькомеханизм запросов на базы данных соединений. Иначе говоря, он способствует повторному использованию соединений, то есть кэшированию памяти базы данных соединений, известному как Pool соединений. Module pool соединений поддерживает его в качестве слоя над любым стандартным продуктом JDBC драйвера.

Это может повысить скорость доступа к данным и уменьшить количество базовых данных, связанных с приложением. Это также может повысить производительность приложения. Pool соединений выполняет следующие задачи:

управление доступными соединениями дistribuir новую связь закрытие соединения

На рисунке выше, есть клиенты, один pool соединений(с четырьмя доступными соединениями) и 1 данные source.

На первом рисунке, три клиента соединились с различными соединениями, и соединения доступны. На втором рисунке, клиент 3 разорвал соединение, и это соединение доступно.

когда клиент завершает работу, он освободит это соединение, и его можно использовать для другого клиента.

HikariCP

По умолчанию соединение pool в SpringBoot 2 составляет HikariCP . Он предоставляет функции предприятиям и улучшает производительность. HikariCP - это реализация JDBC данные source, которая предоставляет механизм pool соединений.

Если HikariCP存在于 классовом пути, Spring Boot автоматически настроит его. Если HikariCP не найден в классовом пути, Spring Boot будет искать Tomcat JDBC соединение pool. если он есть в классовом пути Spring Boot, то его подбирают. Если оба этих варианта недоступны, Spring Boot выбирает Apache Commons DBCP2 в качестве JDBC соединение pool.

Если мы не хотим использовать défaut соединение池, мы можем вручную настроить соединение pool. Предположим, что мы хотим использовать Tomcat JDBC соединение pool, а не HikariCP. Мы исключим HikariCP зависимости и добавить в файл pom.xml tomcat-jdbc зависимости, как показано ниже.

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

Эти методы позволяют нам использовать Tomcat соединитель池, не нужно писать @Configuration класс и определить программным способом DataSource bean.

С другой стороны, мы также можем пропустить алгоритм сканирования соединителя, используемый Spring Boot. Мы можем добавить атрибут в файл application.properties spring.datasource.type для четкого определения источника данных соединителя.

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

Мы уже создали Tomcat соединитель池. Теперь, мы будем application.properties добавить несколько свойств для оптимизации производительности и удовлетворения некоторых специфических требований.

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

Чтобы подключиться к базе данных MySQL, нам нужно включить JDBC-драйвер в классовый путь нашего приложения:

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

С этого момента в application.properties определены в файле datasoure свойства.

Если используется MySQL, пожалуйста, используйте следующие свойстваБаза данных:

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

Если используется Oracle База данных, пожалуйста, используйте следующие свойства:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=system
spring.datasource.password=Password123
Внимание: По умолчанию, Spring Boot 2 использует HikariCP в качестве пула подключений к базе данных. Если в классовом пути нет HikariCP, Spring Boot по умолчанию выбирает pool tomcat.

Почему следует использовать Spring Boot JDBC?

Реализации Spring JDBC и Spring Boot JDBC одинаковы. По сравнению с Spring JDBC, Spring Boot JBDC имеет следующие преимущества:

Spring Boot JDBC Spring JDBC
достаточно одного spring-boot-starter-jdbc зависимости.В Spring JDBC необходимо настроить несколько зависимостей, таких как spring-jdbc и spring-context
Если не указано явно, он автоматически настроит bean Datasource. Если не хотите использовать bean, можно изменить свойства spring.datasource.initialize установлено в false .В Spring JDBC необходимо использовать XML или javaconfig Создание Bean базы данных.
Мы не нуждаемся в регистрации шаблонного bean, потому что Spring Boot автоматически регистрирует bean.Необходимо зарегистрировать шаблонный bean, например PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate .
Все базовые сценарии базы данных, хранящиеся в файлах .sql, автоматически выполняются.Если в SQL-файле был созданany базовый сценарий базы данных (например, удаление или создание таблиц),则需要 явно предоставить эту информацию в конфигурации.

JDBC vs. Hibernate

JDBC Hibernate
JDBC являетсяТехнология.Hibernate является ORM Фреймворк.
В JDBC пользователь отвечает за создание и закрытие соединений.В Hibernate runtime system отвечает за создание и закрытие соединений.
Он не поддерживает отложенную загрузку.Он поддерживает отложенную загрузку, что обеспечивает лучшую производительность.
Он не поддерживает ассоциации (соединение между двумя отдельными классами).Он поддерживает ассоциации.

В следующей части мы изучим соединение MySQL в приложениях Spring Boot.