Спрощення доступу до даних за допомогою Spring Boot Data JPA

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-додатках. Він усуває необхідність писати шаблонний код, надаючи інтерфейси репозиторіїв і абстрагуючи складні запити.

pic

Ключові можливості

  • Автоматична реалізація інтерфейсів репозиторіїв
  • Підтримка користувацьких запитів за допомогою 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

Leave a Reply

Your email address will not be published. Required fields are marked *