Springデータ– CrudRepository save()メソッド

1。概要

CrudRepositoryは、特定のタイプのリポジトリでの一般的なCRUD操作のためのSpringDataインターフェイスです。これは、データベースと対話するためのいくつかのメソッドをすぐに提供します。

このチュートリアルでは、CrudRepository save()メソッドをいつどのように使用するかを説明します。

Spring Dataリポジトリーの詳細については、CrudRepositoryをフレームワークの他のリポジトリーインターフェースと比較する記事をご覧ください。

2.依存関係

SpringDataとH2データベースの依存関係をpom.xmlファイルに追加する必要があります。

 org.springframework.boot spring-boot-starter-data-jpa   com.h2database h2 runtime 

3.アプリケーション例

まず、MerchandiseEntityというSpringDataエンティティを作成しましょう。このクラスは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; } }

次に、MerchandiseEntityと連携するCrudRepositoryインターフェースを作成しましょう。

@Repository public interface InventoryRepository extends CrudRepository { }

ここでは、エンティティのクラスとエンティティIDのクラスであるMerchandiseEntityLongを指定します。このリポジトリのインスタンスがインスタンス化されると、MerchandiseEntityクラスを操作するための基盤となるロジックが自動的に配置されます。

したがって、コードがほとんどないので、save()メソッドの使用を開始する準備ができています。

4. CrudRepository save()を使用して、新しいインスタンスを追加します

MerchandiseEntityの新しいインスタンスを作成し、InventoryRepositoryを使用してデータベースに保存しましょう。

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

これを実行すると、MerchandiseEntityのデータベーステーブルに新しいエントリが作成されます。IDを指定していないことに注意してください。インスタンスは、最初はIDにnull値を使用して作成され、save()メソッドを呼び出すと、IDが自動的に生成されます。

保存()メソッドは、更新を含む保存されたエンティティ、返しのidフィールドを。

5.インスタンスを更新するためのCrudRepositorysave()

同じsave()メソッド使用して、データベース内の既存のエントリを更新できます。特定のタイトルでMerchandiseEntityインスタンスを保存したとします。

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

しかし後で、アイテムの価格を更新したいと思いました。次に、データベースからエンティティを取得し、変更を加えて、以前と同じようにsave()メソッドを使用するだけです。

アイテムのIDpantsId)がわかっているとすると、CRUDRepositoryメソッドfindByIdを使用して、データベースからエンティティを取得できます。

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

ここでは、元のエンティティを新しい価格で更新し、変更をデータベースに保存しました。

6.結論

この簡単な記事では、CrudRepositoryのsave()メソッドの使用について説明しました。この方法を使用して、データベースに新しいエントリを追加したり、既存のエントリを更新したりできます。

いつものように、記事のコードはGitHubにあります。