LoginSignup
1
1

More than 1 year has passed since last update.

(初心者向け)Spring Data JPAの基礎知識

Last updated at Posted at 2022-04-16

現在学習しているSpring bootの中で、Spring Data JPAを利用する機会があったので、復習も兼ねて投稿します。

Spring Data JPAとは

Spring bootでデータベースにアクセスできるライブラリ/フレームワークのこと。

Spring Data JPAでは、JavaクラスとDBテーブルをつなぎ合わせてくれるHibernate(ハイバーネート)ライブラリを内部実装している。

Spring Data JPAでDBを自動生成してみる

今回は練習も兼ねてMySQLとSpring Data JPAを繋げてみます。

MySQLでデータベースの設定を行う。

データベースの作成。

create database db_sample;

ユーザーとパスワードの設定

create user 'username'@'localhost' IDENTIFIED BY 'password';

権限の設定

GRANT ALL PRIVILEGES ON * . * TO 'username'@'localhost';

※補足
GRANT文 = 設定したユーザーに対してアクセス権限の設定をする文。
二つの*(アスタリスク)はそれぞれ、データベースとテーブルを指定している。
今回は*(アスタリスク)なので、全てのデータベースとテーブルへのアクセスを許可している。

設定した権限をリロード

FLUSH PRIVILEGES;

プロジェクトの作成

「新規」 → 「Spring スタータープロジェクト」 から新規プロジェクトを作成。

ライブラリの追加で「MySQL Driver」を選択する
スクリーンショット 2022-04-16 10.33.32.png

②modelクラスの作成
パッケージ「model」を作成。
sampleクラスを作成します。
スクリーンショット 2022-04-16 10.41.15.png

package com.example.demo.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

import lombok.Data;

@Data
@Entity
public class Sample {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	
	private String name;

}

@Data
Beanクラスに付与することで下記のコードを省略できる。
・getter
・setter
・hashcodeメソッドのオーバーライド
・toStringメソッドのオーバーライド
・equalsメソッドのオーバーライド

@Entity
データの入れ物であることを指すアノテーション。
付与したクラスがEntityクラスであることを示す。

@Id
Entityの主キーを示すアノテーション。
@Idを付与すると、プライマリテーブルのプライマリキーカラムであると仮定される。

@GeneratedValue
プライマリキーカラムにユニークな値を自動で生成,付与する方法を指定するアノテーション。
@Idを持つエンティティクラスなどに適用される。

Strategy

エンティティクラスのプライマリキー値を生成する方法を指定する属性。

GenerationType.IDENTITY

データベースのidentity列を利用して,プライマリキー値を生成する。

application.propertiesファイルを作成

application/propertiesファイルを作成し、以下を記載しデータベースの設定を行う。

spring.jpa.hibernate.ddl-auto=create
spring.datasource.url=jdbc:mysql://localhost:3306/db_sample
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

◆spring.jpa.hibernate.ddl-auto

Spring boot起動時にテーブルの自動生成を行う。設定できるのは下記。

Create
entityテーブルがあれば削除し、再生成を行う。

Create-drop
entityテーブルがあれば削除し、再生成を行う。また、Springboot終了時にテーブルを削除する。

Update
Entityのテーブルがない場合、作成する。

◆spring.datasource.url

接続URLを指定

◆spring.datasource.username

MySQLで設定したユーザー名を指定

◆spring.datasource.password

MySQLで設定したパスワードを指定

◆spring.datasource.driver-class-name

JDBC ドライバのクラス名を指定する必要があり、
MySQLでは、com.mysql.cj.jdbc.Driverを指定する。

これで準備完了。
~Application.javaを右クリック → Spring bootアプリケーションで実行。
スクリーンショット 2022-04-16 11.56.49.png

自動生成できました!!

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1