kikki's tech note

技術ブログです。UnityやSpine、MS、Javaなど技術色々について解説しています。

SpringでJPAを使ってDB操作を行う

本章では、Spring Bootでも利用される、JPAの初歩的な使い方について、さわりを共有します。

データモデルの準備

まずデータモデルを定義します

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table

import lombok.Data;

@Data
@Entity
@Table(name="HogeHoge")
public class HogeHoge {

    /** Id */
    @Id
    @Column(name="Id")
    private Long id;

    /** コード */
    @Column(name="Code")
    private String code;

データベースに定義されているテーブル名は「@Table」で指定し、カラム名も同様に「@Column」で指定します。

リポジトリの定義

次に、DBからデータを取得する方法について、以下の2種類をお伝えします。

  • Query Creation
  • JPQL

そして重要なこととして、JPAでDBからデータを取得する際に利用するテーブル名やカラム名は、DBで定義された名前ではなく、Entityクラスで定義されたクラス名、メンバ変数名が使用されます。

サンプルは以下の通りです。

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

@Repository
public interface HogeHogeRepository
        extends JpaRepository<HogeHoge, Long> {

    /** Query Creation方式 */
    Optional<HogeHoge> findTop1ById(Long id);

     /** JPQL方式 */
    @Query("SELECT h FROM HogeHoge h WHERE h.code = :code")
    List<HogeHoge> findByCode(@Param("code") String code);
}

Query Creation

Query Creation方式では、SQLをテキストで記述することなく、一定のルールを設けたメソッドの命名規則でクエリを記述する手法になります。
詳細な書き方は以下公式に記載されているので、ご参照ください
Spring Data JPA - Reference Documentation

JPQL

JPQL方式では、SQLをテキストで記述するのだけれど、DBに依存しないよう、Entityクラスで定義されたクラス名やメンバ変数名を利用して記述する手法になります。
JOINの記述ルールも特殊なので、以下サイトをご参照ください
www.objectdb.com

筆休め

Spring BootでDBと接続して利用する場合、主にJPAを利用することが多いかと思います。初めて利用する人向けに、さわりだけを紹介させて頂きました。

以上、「SpringでJPAを使ってDB操作を行う」でした。


※無断転載禁止 Copyright (C) kikkisnrdec All Rights Reserved.