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
Exercicis pràctics
Exercici 1: Crear un repositori per a una nova entitat
- Defineix una nova entitat
Customer
amb els campsid
,name
iemail
. - Crea una interfície de repositori per a l'entitat
Customer
. - Implementa un servei que utilitzi el repositori per realitzar operacions CRUD sobre
Customer
.
Exercici 2: Afegir mètodes de consulta personalitzats
- Afegeix un mètode de consulta personalitzat a
ProductRepository
per trobar productes per nom. - Implementa un servei que utilitzi aquest mètode de consulta personalitzat.
// 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
- Què és Spring Boot?
- Configuració del teu entorn de desenvolupament
- Creant la teva primera aplicació Spring Boot
- Entenent l'estructura del projecte Spring Boot
Mòdul 2: Conceptes bàsics de Spring Boot
- Anotacions de Spring Boot
- Injecció de dependències a Spring Boot
- Configuració de Spring Boot
- Propietats de Spring Boot
Mòdul 3: Construint serveis web RESTful
- Introducció als serveis web RESTful
- Creant controladors REST
- Gestionant mètodes HTTP
- Gestió d'excepcions en REST
Mòdul 4: Accés a dades amb Spring Boot
- Introducció a Spring Data JPA
- Configuració de fonts de dades
- Creant entitats JPA
- Utilitzant repositoris de Spring Data
- Mètodes de consulta a Spring Data JPA
Mòdul 5: Seguretat a Spring Boot
- Introducció a Spring Security
- Configuració de Spring Security
- Autenticació i autorització d'usuaris
- Implementant autenticació JWT
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ó
- Optimització del rendiment
- Monitorització amb Spring Boot Actuator
- Utilitzant Prometheus i Grafana
- Gestió de registres i logs