В мире Java-разработки Spring Boot стал стандартом де-факто для создания современных приложений, а Oracle Database продолжает оставаться одним из самых мощных и надежных реляционных хранилищ данных. Их интеграция открывает возможности для построения высоконагруженных корпоративных систем, но требует понимания специфики настройки. В этой статье мы детально разберем все шаги подключения Spring Boot к Oracle DB, рассмотрим типичные ошибки и лучшие практики.
Подготовка проекта и зависимостей
Первым шагом является создание Spring Boot проекта. Вы можете использовать Spring Initializr или свою любимую IDE. При выборе зависимостей обязательно добавьте:
- Spring Data JPA — для работы с базой данных через репозитории
- Oracle JDBC Driver — драйвер для подключения к Oracle
Важный момент: официальный драйвер Oracle (ojdbc) не находится в публичных Maven-репозиториях по умолчанию. Вам потребуется либо скачать его вручную и установить в локальный репозиторий, либо использовать альтернативные источники.
Добавление драйвера Oracle в Maven
Самый простой способ — добавить зависимость из репозитория Maven Central (для ojdbc8 или более новых версий):
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.5.0.0</version>
</dependency>
Конфигурация подключения в application.properties
Основная конфигурация происходит в файле application.properties или application.yml. Вот минимальный набор параметров:
# Основные параметры подключения
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:ORCLCDB
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
# Настройки Hibernate/JPA
spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
Обратите внимание на диалект Hibernate. Для Oracle 12c и выше используйте Oracle12cDialect. Для более старых версий может потребоваться Oracle10gDialect.
Создание сущности и репозитория
После настройки подключения создайте простую JPA-сущность:
@Entity
@Table(name = "employees")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_seq")
@SequenceGenerator(name = "employee_seq", sequenceName = "employee_sequence")
private Long id;
@Column(name = "full_name", nullable = false)
private String fullName;
@Column(unique = true)
private String email;
// Конструкторы, геттеры и сеттеры
}
Затем создайте репозиторий, расширяющий JpaRepository:
@Repository
public interface EmployeeRepository extends JpaRepository {
List findByFullNameContaining(String name);
Optional findByEmail(String email);
}
Пул соединений и продвинутые настройки
Для production-среды критически важно настроить пул соединений. Spring Boot по умолчанию использует HikariCP. Добавьте в application.properties:
# Настройки HikariCP
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
Обработка исключений и транзакции
Spring предоставляет мощные механизмы управления транзакциями. Используйте аннотацию @Transactional для методов, которые должны выполняться в транзакции:
@Service
@Transactional
public class EmployeeService {
@Autowired
private EmployeeRepository repository;
public Employee createEmployee(Employee employee) {
// Будет выполнено в транзакции
return repository.save(employee);
}
}