En aquest tema, aprendrem com utilitzar els repositoris de Spring Data per accedir i manipular dades en una aplicació Spring Boot. Els repositoris de Spring Data proporcionen una manera senzilla i eficient de treballar amb bases de dades, permetent-nos centrar-nos en la lògica de negoci sense preocupar-nos pels detalls de la implementació de l'accés a dades.

Objectius

  • Entendre què són els repositoris de Spring Data.
  • Aprendre a crear i utilitzar repositoris de Spring Data.
  • Explorar les operacions bàsiques proporcionades pels repositoris.
  • Veure exemples pràctics d'ús de repositoris.

Què són els repositoris de Spring Data?

Els repositoris de Spring Data són interfícies que proporcionen mètodes per realitzar operacions CRUD (Create, Read, Update, Delete) i altres operacions de consulta sobre entitats JPA. Spring Data genera automàticament la implementació d'aquestes interfícies, estalviant-nos la necessitat d'escriure codi repetitiu.

Creant un repositori de Spring Data

Pas 1: Definir l'entitat JPA

Abans de crear un repositori, necessitem una entitat JPA. Suposem que tenim una entitat Product:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;

    // Getters i setters
}

Pas 2: Crear el repositori

Ara crearem una interfície de repositori per a l'entitat Product. Aquesta interfície ha d'extendre JpaRepository o una altra interfície de repositori proporcionada per Spring Data.

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
    // Mètodes de consulta personalitzats es poden definir aquí
}

Pas 3: Utilitzar el repositori

Podem injectar el repositori en un servei o controlador i utilitzar-lo per realitzar operacions sobre l'entitat Product.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    public Product getProductById(Long id) {
        return productRepository.findById(id).orElse(null);
    }

    public Product saveProduct(Product product) {
        return productRepository.save(product);
    }

    public void deleteProduct(Long id) {
        productRepository.deleteById(id);
    }
}

Operacions bàsiques amb repositoris

Els repositoris de Spring Data proporcionen una sèrie de mètodes per realitzar operacions bàsiques. A continuació es mostren alguns dels mètodes més comuns:

Mètode Descripció
save(S entity) Desa l'entitat proporcionada.
findById(ID id) Retorna l'entitat amb l'ID proporcionat.
findAll() Retorna totes les entitats.
deleteById(ID id) Elimina l'entitat amb l'ID proporcionat.
count() Retorna el nombre d'entitats.
existsById(ID id) Comprova si existeix una entitat amb l'ID proporcionat.

Exemples pràctics

Exemple 1: Desar un producte

Product product = new Product();
product.setName("Laptop");
product.setPrice(1200.00);

productRepository.save(product);

Exemple 2: Obtenir tots els productes

List<Product> products = productRepository.findAll();
products.forEach(product -> System.out.println(product.getName()));

Exemple 3: Obtenir un producte per ID

Long productId = 1L;
Product product = productRepository.findById(productId).orElse(null);
if (product != null) {
    System.out.println("Product found: " + product.getName());
} else {
    System.out.println("Product not found");
}

Exemple 4: Eliminar un producte

Long productId = 1L;
productRepository.deleteById(productId);

Exercicis pràctics

Exercici 1: Crear un repositori per a una nova entitat

  1. Defineix una nova entitat Customer amb els camps id, name i email.
  2. Crea una interfície de repositori per a l'entitat Customer.
  3. Implementa un servei que utilitzi el repositori per realitzar operacions CRUD sobre Customer.

Exercici 2: Afegir mètodes de consulta personalitzats

  1. Afegeix un mètode de consulta personalitzat a ProductRepository per trobar productes per nom.
  2. Implementa un servei que utilitzi aquest mètode de consulta personalitzat.
// Afegeix aquest mètode a ProductRepository
List<Product> findByName(String name);
// Utilitza el mètode de consulta personalitzat en ProductService
public List<Product> getProductsByName(String name) {
    return productRepository.findByName(name);
}

Resum

En aquest tema, hem après com utilitzar els repositoris de Spring Data per accedir i manipular dades en una aplicació Spring Boot. Hem vist com crear un repositori, utilitzar-lo per realitzar operacions bàsiques i afegir mètodes de consulta personalitzats. Els repositoris de Spring Data simplifiquen significativament el treball amb bases de dades, permetent-nos centrar-nos en la lògica de negoci.

En el següent tema, explorarem els mètodes de consulta a Spring Data JPA, on aprendrem a crear consultes més complexes i personalitzades.

Curs de Spring Boot

Mòdul 1: Introducció a Spring Boot

Mòdul 2: Conceptes bàsics de Spring Boot

Mòdul 3: Construint serveis web RESTful

Mòdul 4: Accés a dades amb Spring Boot

Mòdul 5: Seguretat a Spring Boot

Mòdul 6: Proves a Spring Boot

Mòdul 7: Funcions avançades de Spring Boot

Mòdul 8: Desplegant aplicacions Spring Boot

Mòdul 9: Rendiment i monitorització

Mòdul 10: Millors pràctiques i consells

© Copyright 2024. Tots els drets reservats