Spring Boot змінив підхід до розробки Java-додатків, спрощуючи складні фреймворки та надаючи потужні інструменти для розробки. Одним з таких інструментів є Spring Boot Data JPA, який робить взаємодію з базами даних надзвичайно простою. У цій статті ми розглянемо, як використовувати Spring Boot Data JPA на практиці, на прикладі управління страховими полісами.
Перші кроки
Щоб слідувати інструкціям, вам потрібно:
- Встановлений Java 21
- Spring Boot 3.4.0 (або новіша версія)
Що таке Spring Boot Data JPA?
Spring Boot Data JPA є частиною проєкту Spring Data, який спрощує доступ до даних у Java-додатках. Він усуває необхідність писати шаблонний код, надаючи інтерфейси репозиторіїв і абстрагуючи складні запити.
Ключові можливості
- Автоматична реалізація інтерфейсів репозиторіїв
- Підтримка користувацьких запитів за допомогою JPQL або рідного SQL
- Вбудована пагінація та сортування
Необхідні залежності
Додайте наступні залежності у ваш pom.xml
(для Maven):
Maven
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-jpa
com.h2database
h2
runtime
Крок за кроком реалізація
Створимо додаток для управління страховими полісами, включаючи операції CRUD (створення, читання, оновлення, видалення).
1. Налаштуйте ваш Spring Boot проєкт
Використовуйте Spring Initializr для створення Spring Boot проєкту. Виберіть наступні залежності:
- Spring Web
- Spring Data JPA
- H2 Database (для тестування)
2. Налаштуйте додаток
Оновіть файл application.yml
, щоб налаштувати базу даних H2:
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
hibernate:
ddl-auto: update
h2:
console:
enabled: true
3. Створіть клас Entity
Страховий поліс може мати атрибути, такі як ID, назва поліса, сума страхування та премія. Визначимо їх у класі сутності:
package com.example.insurance;
import jakarta.persistence.*;
import lombok.Data;
@Entity
@Data
public class InsurancePolicy {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String policyName;
private Double sumInsured;
private Double premium;
}
4. Створіть інтерфейс репозиторія
Spring Data JPA дозволяє створювати інтерфейси репозиторіїв без написання реалізації.
package com.example.insurance;
import org.springframework.data.jpa.repository.JpaRepository;
public interface InsurancePolicyRepository extends JpaRepository {
}
5. Створіть шар сервісу
Шар сервісу обробляє бізнес-логіку. Ось просте її впровадження:
package com.example.insurance;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class InsurancePolicyService {
private final InsurancePolicyRepository repository;
public InsurancePolicyService(InsurancePolicyRepository repository) {
this.repository = repository;
}
public List getAllPolicies() {
return repository.findAll();
}
public Optional getPolicyById(Long id) {
return repository.findById(id);
}
public InsurancePolicy savePolicy(InsurancePolicy policy) {
return repository.save(policy);
}
public void deletePolicy(Long id) {
repository.deleteById(id);
}
}
Створення контролера
Контролер надає REST кінцеві точки для управління полісами.
package com.example.insurance;
```
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/v1/policies")
public class InsurancePolicyController {
private final InsurancePolicyService service;
public InsurancePolicyController(InsurancePolicyService service) {
this.service = service;
}
@GetMapping
public List getAllPolicies() {
return service.getAllPolicies();
}
@GetMapping("/{id}")
public ResponseEntity getPolicyById(@PathVariable Long id) {
return service.getPolicyById(id)
.map(ResponseEntity::ok)
.orElse(ResponseEntity.notFound().build());
}
@PostMapping
public InsurancePolicy createPolicy(@RequestBody InsurancePolicy policy) {
return service.savePolicy(policy);
}
@DeleteMapping("/{id}")
public ResponseEntity deletePolicy(@PathVariable Long id) {
service.deletePolicy(id);
return ResponseEntity.noContent().build();
}
}
7. Тестування додатка
Запустіть додаток та протестуйте кінцеві точки за допомогою таких інструментів, як Postman. Ось кілька прикладів запитів:
Створення полісу
POST /api/v1/policies
{
"policyName": "Health Insurance",
"sumInsured": 500000,
"premium": 12000
}
Отримати всі поліси
GET /api/v1/policies
Видалити поліс
DELETE /api/v1/policies/{id}
Висновок
У цій статті ми розглянули, як використовувати Spring Boot Data JPA для створення простого додатка для управління страховими полісами. Дотримуючись цих кроків, ви зможете ефективно управляти шарами доступу до даних у своїх Spring Boot проєктах. Простота Spring Boot у поєднанні з потужністю Data JPA робить цей інструмент вибором номер один для Java-розробників.
Сподіваюся, ця стаття допомогла вам зрозуміти, як використовувати Spring Boot Data JPA для управління страховими полісами, її переваги та як інтегрувати її у ваш додаток.
Продовжуємо навчатися та розвиватися! 🌱
Перекладено з: Simplifying Data Access with Spring Boot Data JPA