Spring Data JPA を使う

Spring Data JPA を使う

Spring bootでSpring Data JPAを使うには、pom.xmlに以下を追加します。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

JpaRepositoryを継承したインタフェースクラスにはCRUD操作のfindOne,findAll,save,deleteメソッドが用意されています。

以下、リポジトリクラスです。

package com.web.repository;

import java.util.List;

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

import com.web.domain.Customer;

@Repository
public interface CustomerRepository extends JpaRepository<Customer,Integer>{

}

Customerクラスは以下のようにします。

package com.web.domain;

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

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Entity
@Table(name="tbl_customer")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Customer{
  @Id
  @GeneratedValue
  private Integer id;
  @Column(nullable = false)
  private String firstname;
  @Column(nullable = false)
  private String lastname;
  @Column(nullable = false)
  private String age;
}

@EntityでJPAのエンティティであることを示しています。

@Tableでテーブル名を指定しています。

@Idでプライマリキーを指定しています。

@GeneratedValueで自動採番されることを示しています。

@Columnでカラムに対して制約をつけています。ここではnot null制約を付けています。

@GeneratedValueを指定している場合は、DB側でauto incrementを指定していないと「The database returned no natively generated identity value;」とエラーが発生します。

エントリポイント配下のようにするだけでインサート文が発行されます。

package com.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

import com.web.domain.Customer;
import com.web.repository.CustomerRepository;

@EnableAutoConfiguration
@ComponentScan
public class App implements CommandLineRunner{
  @Autowired
  CustomerRepository cr;

  @Override
  public void run(String... strs){
    Customer customer = cr.save(new Customer(null,"aida","mitsuo","18"));
  }

  public static void main( String[] args ){
    SpringApplication.run(App.class, args);
  }
}

Spring Data JPA を使う

コメント

タイトルとURLをコピーしました