Java for Beginner
672 subscribers
541 photos
155 videos
12 files
827 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Настройка DataSource и подключение к базе данных

В Spring JDBC для подключения к базе данных используется интерфейс DataSource, который управляет пулами соединений и предоставляет соединения, необходимые для работы с базой данных. DataSource можно настраивать с помощью конфигурационного файла (например, application.properties) или через Java-код.

Настройка DataSource через application.properties

Наиболее удобный способ конфигурации DataSource — использование файла application.properties (или application.yml) для задания параметров подключения. Spring Boot предоставляет встроенную поддержку для работы с DataSource, если указаны необходимые свойства.

Пример конфигурации в application.properties для подключения к базе данных MySQL:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=rootpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
После этого Spring Boot автоматически настраивает DataSource и JdbcTemplate, и они становятся доступными для внедрения в компоненты.


Настройка DataSource в Java-конфигурации

Для более гибкой настройки, особенно если не используется Spring Boot, можно создать DataSource вручную с помощью Java-конфигурации. Spring предоставляет несколько реализаций DataSource, но наиболее популярные из них — DriverManagerDataSource и HikariDataSource.

Пример настройки DriverManagerDataSource:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {

@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
dataSource.setUsername("root");
dataSource.setPassword("rootpassword");
return dataSource;
}

@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}


Использование HikariCP для повышения производительности

HikariCP — это один из самых быстрых и легковесных пулов соединений, который используется по умолчанию в Spring Boot. Он предлагает высокую производительность и снижает время отклика приложения при подключении к базе данных. Чтобы задействовать HikariCP, достаточно задать его параметры в application.properties:
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=MyHikariCP
spring.datasource.hikari.max-lifetime=1800000


#Java #Training #Spring #DataSource
Подключение и работа с базой данных

После настройки
DataSource можно работать с JdbcTemplate для выполнения SQL-запросов.

Рассмотрим пример выполнения запроса на выборку данных:
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class ProductRepository {

private final JdbcTemplate jdbcTemplate;

public ProductRepository(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

public List<Product> getAllProducts() {
String sql = "SELECT * FROM products";
return jdbcTemplate.query(sql, (rs, rowNum) ->
new Product(rs.getInt("id"), rs.getString("name"), rs.getBigDecimal("price"))
);
}
}


Преимущества пула соединений


Пулы соединений, такие как HikariCP, предоставляют несколько ключевых преимуществ:

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


Проверка соединения и настройки при инициализации приложения

Для проверки соединения и выполнения инициализации данных можно воспользоваться SQL-скриптами, которые автоматически запускаются при запуске приложения:
spring.datasource.schema=classpath:schema.sql
spring.datasource.data=classpath:data.sql
Пример schema.sql:

sql
Копировать код
CREATE TABLE IF NOT EXISTS products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
Пример data.sql:

sql
Копировать код
INSERT INTO products (name, price) VALUES ('Product A', 100.00);
INSERT INTO products (name, price) VALUES ('Product B', 150.00);


#Java #Training #Spring #DataSource