Введение

Hibernate и Spring Boot — две популярные технологии в экосистеме Java, которые без проблем работают вместе, упрощая разработку веб-приложений. Hibernate — это мощная библиотека объектно-реляционного сопоставления (ORM), которая абстрагирует уровень базы данных, а Spring Boot предоставляет легкую и простую в использовании платформу для создания микросервисов и веб-приложений.

В этом руководстве мы рассмотрим процесс настройки приложения Spring Boot с помощью Hibernate с фрагментами кода, которые помогут вам в этом.

Предпосылки

Чтобы следовать этому руководству, у вас должно быть:

  1. Базовое понимание Java и Spring Boot
  2. Maven или Gradle установлен
  3. Работающая установка MySQL (или любой другой реляционной базы данных)

Настройка проекта

Сначала создайте новый проект Spring Boot с помощью Spring Initializr. Выберите следующие зависимости:

  • Интернет
  • JPA (API сохраняемости Java)
  • MySQL (или предпочитаемая вами база данных)

Загрузите и распакуйте сгенерированный проект.

Настройка подключения к базе данных

Откройте файл application.properties в каталоге src/main/resources и добавьте следующую конфигурацию:

spring.datasource.url=jdbc:mysql://localhost:3306/my_database?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=my_password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

Замените my_database, root и my_password именем вашей базы данных, именем пользователя и паролем соответственно.

Создание класса сущностей

Создайте новый класс Java Employee в пакете com.example.demo и добавьте следующий код:

package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String position;
    // Getters and setters
    // Constructors
}

Создание репозитория

Создайте новый интерфейс EmployeeRepository в пакете com.example.demo и расширьте JpaRepository:

package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
}

Создание службы

Создайте новый класс EmployeeService в пакете com.example.demo и добавьте следующий код:

package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class EmployeeService {
    @Autowired
    private EmployeeRepository employeeRepository;
    public List<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }
    public Employee getEmployeeById(Long id) {
        return employeeRepository.findById(id).orElse(null);
    }
    public Employee saveOrUpdateEmployee(Employee employee) {
        return employeeRepository.save(employee);
    }
    public void deleteEmployee(Long id) {
        employeeRepository.deleteById(id);
    }
}

Создание контроллера

Создайте новый класс EmployeeController в пакете com.example.demo и добавьте следующий код:

package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/employees")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;
    @GetMapping
    public List<Employee> getAllEmployees() {
        return employeeService.getAllEmployees();
    }
    @GetMapping("/{id}")