見出し画像

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

こんにちは、TAIKIです。
現在学習している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」を選択する

②modelクラスの作成
パッケージ「model」を作成。
sampleクラスを作成します。


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アプリケーションで実行。


自動生成できました!!

参考文献


https://spring.pleiades.io/guides/gs/accessing-data-mysql/


ここまでご覧いただき、ありがとうございました!
皆さんのお役に立てれば幸いです。



ALHについて知る



↓ ↓ ↓ 採用サイトはこちら ↓ ↓ ↓


↓ ↓ ↓ コーポレートサイトはこちら ↓ ↓ ↓


↓ ↓ ↓ もっとALHについて知りたい? ↓ ↓ ↓