Spring Data - Méthode CrudRepository save ()

1. Vue d'ensemble

CrudRepository est une interface Spring Data pour les opérations CRUD génériques sur un référentiel d'un type spécifique. 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éthode CrudRepository save () .

Pour en savoir plus sur les référentiels Spring Data, consultez notre article qui compare CrudRepository à d'autres interfaces de référentiel du framework.

2. Dépendances

Nous devrons ajouter les dépendances de base de données Spring Data et H2 à notre fichier pom.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ée MerchandiseEntity . Cette classe définira les types de données qui seront conservés dans la base de données lorsque nous appelons la méthode 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 interface CrudRepository pour travailler avec MerchandiseEntity :

@Repository public interface InventoryRepository extends CrudRepository { }

Ici, nous spécifions la classe de l'entité et la classe de l'ID d'entité, MerchandiseEntity et Long . Lorsqu'une instance de ce référentiel est instanciée, la logique sous-jacente sera automatiquement en place pour travailler avec notre classe MerchandiseEntity .

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

4. CrudRepository save () pour ajouter une nouvelle instance

Créons une nouvelle instance de MerchandiseEntity et sauvegardons-la dans la base de données à l'aide de InventoryRepository :

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 pour MerchandiseEntity . Notez que nous n'avons jamais spécifié d' identifiant . L'instance est initialement créée avec une valeur nulle pour son id et lorsque nous appelons la méthode save () , un id est automatiquement généré.

La méthode save () renvoie l'entité enregistrée, y compris le champ id mis à jour .

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

Nous pouvons utiliser la même méthode save () pour mettre à jour une entrée existante dans notre base de données . Supposons que nous ayons enregistré une instance MerchandiseEntity 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 récupérer l'entité de la base de données, effectuer le changement et utiliser la méthode save () comme auparavant.

En supposant que nous savons l' id de l'élément ( pantsId ), nous pouvons utiliser la CRUDRepository méthode findById 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 couvert l'utilisation de la méthode save () de CrudRepository . Cette méthode peut être utilisée pour ajouter une nouvelle entrée dans votre base de données ainsi que pour mettre à jour une entrée existante.

Comme d'habitude, le code de l'article est terminé sur GitHub.