Données de printemps - Méthode CrudRepository save ()

Données de printemps - Méthode CrudRepository save ()

1. Vue d'ensemble

CrudRepository est unSpring Data interface for generic CRUD operations on a repository of a specific type. Il fournit plusieurs méthodes prêtes à l'emploi pour interagir avec une base de données.

Dans ce didacticiel, nous expliquerons comment et quand utiliser la méthodeCrudRepositorysave().

Pour en savoir plus sur les référentiels Spring Data, jetez un œil à notrearticle qui compareCrudRepository à d'autres interfaces de référentiel du framework.

Lectures complémentaires:

Données de printemps JPA @Query

Apprenez à utiliser l'annotation @Query dans Spring Data JPA pour définir des requêtes personnalisées à l'aide de JPQL et de SQL natif.

Read more

Spring Data JPA - Méthodes de suppression dérivées

Apprenez à définir les méthodes Spring Data deleteBy et removeBy

Read more

2. Les dépendances

Nous devrons ajouter les dépendances de base de donnéesSpring Data etH2 à notre fichierpom.xml:


    org.springframework.boot
    spring-boot-starter-data-jpa


    com.h2database
    h2
    runtime

3. Exemple d'application

Commençons par créer notre entité Spring Data appeléeMerchandiseEntity. Cette classe sera la méthodedefine the data types that will get persisted to the database when we call the save():

@Entity
public class MerchandiseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private double price;

    private String brand;

    public MerchandiseEntity() {
    }

    public MerchandiseEntity(String brand, double price) {
        this.brand = brand;
        this.price = price;
    }
}

Ensuite, créons une interfaceCrudRepository pour travailler avec lesMerchandiseEntity:

@Repository
public interface InventoryRepository
  extends CrudRepository {
}

Here we specify the entity’s class and the entity id’s class, MerchandiseEntity and Long. Lorsqu'une instance de ce référentiel est instanciée, la logique sous-jacente sera automatiquement en place pour travailler avec notre classeMerchandiseEntity.

Donc, avec très peu de code, nous sommes déjà prêts à commencer à utiliser la méthodesave().

4. CrudRepository save () pour ajouter une nouvelle instance

Créons une nouvelle instance deMerchandiseEntity et sauvegardons-la dans la base de données à l’aide desInventoryRepository:

InventoryRepository repo = context
  .getBean(InventoryRepository.class);

MerchandiseEntity pants = new MerchandiseEntity(
  "Pair of Pants", BigDecimal.ONE);
pants = repo.save(pants);

L'exécution de cette opération créera une nouvelle entrée dans la table de base de données pourMerchandiseEntity. Notez que nous n'avons jamais spécifié deid. L'instance est initialement créée avec une valeurnull pour sesid et lorsque nous appelons la méthodesave(), unid est automatiquement généré.

La méthodesave() renvoie l'entité enregistrée, y compris le champid mis à jour.

5. CrudRepository save () pour mettre à jour une instance

Nous pouvons utiliser la même méthode save ()to update an existing entry in our database. Supposons que nous ayons enregistré une instance deMerchandiseEntity avec un titre spécifique:

MerchandiseEntity pants = new MerchandiseEntity(
  "Pair of Pants", 34.99);
pants = repo.save(pants);

Mais plus tard, nous avons constaté que nous voulions mettre à jour le prix de l'article. Nous pourrions alors simplement extraire l'entité de la base de données, effectuer le changement et utiliser la méthodesave() comme auparavant.

En supposant que nous connaissions lesid de l'élément (pantsId), nous pouvons utiliser la méthodeCRUDRepositoryfindById pour obtenir notre entité de la base de données:

MerchandiseEntity pantsInDB = repo.findById(pantsId).get();
pantsInDB.setPrice(44.99);
repo.save(pantsInDB);

Ici, nous avons mis à jour notre entité d'origine avec un nouveau prix et enregistré les modifications dans la base de données.

6. Conclusion

Dans cet article rapide, nous avons abordé l'utilisation de la méthode save () deCrudRepository. Cette méthode peut être utilisée pour ajouter une nouvelle entrée dans votre base de données et pour mettre à jour une entrée existante.

Comme d'habitude, le code de l'article estover on GitHub.