データ]


1概要


CrudRepository

は、特定のタイプのリポジトリに対する一般的なCRUD操作のためのSpring Dataインタフェースです。

このチュートリアルでは、

CrudRepository


save()

メソッドの使用方法と使用方法について説明します。

Spring Dataリポジトリの詳細については、https://www.baeldung.com/spring-data-repositories[article]を参照してください。これは、

CrudRepository

をフレームワークの他のリポジトリインタフェースと比較したものです。


2依存関係


Spring Data

とhttps://mvnrepository.com/artifact/com.h2database/を追加します

pom.xml

ファイルに対するh2[H2]データベースの依存関係:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>


3アプリケーション例

まず、

MerchandiseEntity

というSpring Dataエンティティを作成しましょう。

このクラスは、

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<MerchandiseEntity, Long> {
}

  • ここでは、エンティティのクラスとエンティティIDのクラス、

    MerchandiseEntity



    Long

    ** を指定します。このリポジトリのインスタンスがインスタンス化されると、基盤となるロジックが自動的に

    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

が自動的に生成されます。


save()メソッドは、更新された

id__フィールドを含む、保存されたエンティティを返します。


5インスタンスを更新するための

CrudRepository

save()

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

MerchandiseEntity

インスタンスを保存したとします。

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

しかし、後でアイテムの価格を更新したいことがわかりました。その後、データベースからエンティティを取得し、変更を加えて、以前と同様に

save()

メソッドを使用することができます。

アイテムの

id



pantsId

)を知っていると仮定すると、データベースからエンティティを取得するために

CRUDRepository

メソッド

findById

を使用できます。

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

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


6. 結論

このクイック記事では、

CrudRepository

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

いつものように、この記事のコードはhttps://github.com/eugenp/tutorials/tree/master/persistence-modules/spring-data-jpa[GitHubに追加]です。