(初心者向け)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について知りたい? ↓ ↓ ↓