Spring Boot 4 Microservices & REST APIs · Lezione

Creazione di entità e repository

Definisca le entità JPA per rappresentare il modello dei dati e utilizzi i repository Spring Data per accedere ai dati.

Lezione 3 di 611 passaggi

Creazione di entità e repository è una lezione Spring Boot 4 Microservices & REST APIs gratuita su CoddyKit. Questa è la lezione 3 di 6. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Spring Boot 4 Microservices & REST APIs, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Spring Boot 4 Microservices & REST APIs include 6 lezioni in totale.

Che cosa sono le entità JPA?

Benvenuto nella creazione del modello di dati. In Spring Boot con JPA, un'Entity è un semplice oggetto Java che rappresenta una tabella del database.

È come un modello per le righe della tabella. Ogni istanza di una classe entità corrisponde a una singola riga nella tabella del database.

Indicare una classe come entità

Per comunicare a Spring Boot che una classe Java è un'entità, utilizziamo l'annotazione @Entity. Questa annotazione proviene dalla Java Persistence API (JPA).

Quando Spring rileva @Entity, sa di dover mappare la classe a una tabella del database. Per impostazione predefinita, il nome della tabella sarà uguale a quello della classe (ad esempio, una classe Product viene mappata a una tabella Product).

Definire le chiavi primarie con @Id

Ogni tabella del database necessita di una chiave primaria per identificare univocamente ogni record. In JPA, indichiamo un campo come chiave primaria usando l'annotazione @Id.

Spesso desideriamo che sia il database a generare automaticamente questo ID. A tale scopo utilizziamo l'annotazione @GeneratedValue, in genere con una strategia come IDENTITY per i numeri autoincrementanti.

La prima entità Product

Creiamo una semplice entità Product. Avrà un ID, un nome e un prezzo. Noti le annotazioni @Entity, @Id e @GeneratedValue.

Ricordi di includere un costruttore predefinito e i getter/setter affinché JPA funzioni correttamente.

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

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

    public Product() {}

    public Product(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public double getPrice() { return price; }
    public void setPrice(double price) { this.price = price; }

    @Override
    public String toString() {
        return "Product{" +
               "id=" + id +
               ", name='" + name + '\'' +
               ", price=" + price +
               '}';
    }
}

Introduzione ai repository Spring Data

Ora che disponiamo di un'entità, come interagiamo con il database per salvare, recuperare, aggiornare o eliminare i prodotti? È qui che entrano in gioco i Repository!

Spring Data JPA offre un'astrazione potente che semplifica l'accesso ai dati. Invece di scrivere query SQL complesse, è sufficiente definire semplici interfacce.

L'interfaccia JpaRepository

Il fulcro di Spring Data JPA è l'interfaccia JpaRepository. Quando l'interfaccia del repository estende JpaRepository, Spring fornisce automaticamente i metodi CRUD standard (Create, Read, Update, Delete) per l'entità.

È sufficiente specificare il tipo di entità e il tipo della relativa chiave primaria, come segue: JpaRepository<YourEntity, ID_Type>.

Definizione del repository Product

Creiamo un repository per la nostra entità Product. Si tratta semplicemente di un'interfaccia che estende JpaRepository, indicando a Spring di generare per noi il codice necessario.

Specifichiamo Product come tipo di entità e Long come tipo della chiave primaria.

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

@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
    // Spring Data JPA automatically provides methods like:
    // save(), findById(), findAll(), deleteById(), etc.
}

Utilizzo dei repository in Spring

In un'applicazione Spring Boot, in genere si esegue l'iniezione del repository in un servizio o in un controller utilizzando @Autowired. Dopodiché è possibile chiamare i metodi integrati.

  • repository.save(product): salva un nuovo prodotto o aggiorna un prodotto esistente.
  • repository.findById(id): trova un prodotto in base al relativo ID.
  • repository.findAll(): recupera tutti i prodotti.

Entità e repository in azione

Ecco un esempio concettuale che mostra come viene creata un'entità e come un repository la salverebbe. Simuliamo il comportamento del repository per poter eseguire l'esempio senza una configurazione completa di Spring Boot.

L'esempio mostra la creazione di un oggetto Product e l'utilizzo di un metodo 'save'.

// --- Simulated Product Entity --- //
class Product {
    private Long id;
    private String name;
    private double price;

    public Product(Long id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }
    // Getters and Setters (simplified for brevity)
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public double getPrice() { return price; }
    public void setPrice(double price) { this.price = price; }

    @Override
    public String toString() {
        return "Product{id=" + id + ", name='" + name + "', price=" + price + "}";
    }
}

// --- Simulated Product Repository Interface --- //
interface ProductRepository {
    Product save(Product product);
}

// --- Simulated Product Repository Implementation --- //
class SimpleProductRepository implements ProductRepository {
    private static Long nextId = 1L;
    @Override
    public Product save(Product product) {
        if (product.getId() == null) {
            product.setId(nextId++); // Assign a new ID
        }
        System.out.println("Simulating save: " + product);
        return product;
    }
}

public class Main {
    public static void main(String[] args) {
        // 1. Create a Product entity instance
        Product newProduct = new Product(null, "Wireless Earbuds", 99.99);
        System.out.println("Created product: " + newProduct);

        // 2. Simulate saving it using our repository
        ProductRepository repository = new SimpleProductRepository();
        Product savedProduct = repository.save(newProduct);

        System.out.println("Product after simulated save: " + savedProduct);
    }
}

Verifica rapida: concetti fondamentali

Quale delle seguenti annotazioni viene utilizzata per contrassegnare una classe come entità JPA associata a una tabella del database?

Riepilogo: entità e repository

Ha appreso i fondamenti della definizione del modello dei dati con Spring Data JPA!

  • Le entità sono oggetti Java che rappresentano le tabelle del database e sono contrassegnate con @Entity.
  • Le chiavi primarie vengono definite con @Id e spesso generate automaticamente utilizzando @GeneratedValue.
  • I repository sono interfacce che estendono JpaRepository e forniscono metodi potenti e pronti all'uso per interagire con il database.

Questi due concetti sono i pilastri della persistenza dei dati in Spring Boot.

Gratis per iniziare

Impara Java con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
24
Lezioni
93

Domande Frequenti

La lezione «Creazione di entità e repository» è gratuita?

Sì — il testo completo di «Creazione di entità e repository» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Spring Boot 4 Microservices & REST APIs, passa a CoddyKit PRO. Il corso Spring Boot 4 Microservices & REST APIs include 6 lezioni in totale.

Cosa imparerò in «Creazione di entità e repository»?

Definisca le entità JPA per rappresentare il modello dei dati e utilizzi i repository Spring Data per accedere ai dati. Eserciti Spring Boot 4 Microservices & REST APIs con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Spring Boot 4 Microservices & REST APIs?

Non è richiesta alcuna esperienza precedente. Spring Boot 4 Microservices & REST APIs su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 6.

Quanto tempo richiede la lezione «Creazione di entità e repository»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Spring Boot 4 Microservices & REST APIs?

Sì. Ogni lezione Spring Boot 4 Microservices & REST APIs include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Integrazione del database H2 e di JPA
  2. Introduzione a Spring Data JPA
  3. Creazione di entità e repository
  4. Definire entità e repository
  5. Operazioni CRUD con REST
  6. Eseguire operazioni CRUD
← Torna a Spring Boot 4 Microservices & REST APIs