8.

【Spring Boot (JPA編)】DB接続設定からエンティティおよびリポジトリの作成、値の取得まで

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

本稿ではSpring FrameworkにおけるJPAを使用したDBの作成~値の取得まで一通りを説明します。

 

前提

・Spring Bootを使用

・mavenを使用

・DBはMySQLを使用(適宜読み替えられれば他のDBでも可能)

 

DBの作成

今回の例ではMySQLを用意します。

Windowsの場合、MySQLを単独でインストールすると色々と設定がめんどくさいので、今回はXAMPPのMySQLを使用します。XAMPPのインストールはこちらを参照。

MySQLにデータベースおよびテーブルを作成しましょう。以下のコマンドを実行します。

CREATE DATABASE spring_db CHARACTER SET utf8 COLLATE utf8_bin;

GRANT ALL PRIVILEGES
ON spring_db.*
TO spring_user@localhost
IDENTIFIED BY 'spring_password';

 

テスト用のテーブルを作成

以下のコマンドを実行してテスト用のテーブルを作成しましょう。

CREATE TABLE `user`(
id bigint(20),
name VARCHAR(50) NOT NULL
);

ALTER TABLE `user` ADD PRIMARY KEY (`id`);

ALTER TABLE `user` MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;

INSERT INTO user (name)VALUES('tarou'),('jirou');

 

pom.xmlの修正

必要なライブラリをpom.xmlに記載します。

dependenciesに以下の項目を追加しましょう。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

 

DB接続設定

src/maim/resources」の「application.properties」に以下の内容を追記しましょう。

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring_db
spring.datasource.username=spring_user
spring.datasource.password=spring_password
spring.jpa.database=MYSQL

※テーブル名が大文字の場合は以下の記述を追加する。

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

 

エンティティクラスの作成

Java側のデータ保持用のエンティティクラスを作成します。

分かりやすいようにentity用のパッケージを作成しておきましょう。

テーブル定義に沿って以下の様に定義しましょう。

package com.example.demo.entity;

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

@Entity
@Table(name="user")
public class User {
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    
@Column
    private long id;
    
    
@Column(length=50, nullable = false)
    private String name;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

 

リポジトリインターフェースの作成

DB操作の処理をリポジトリインターフェースで定義します。

分かりやすいようにrepository用のパッケージを作成しておきましょう。

以下、リポジトリインターフェースの定義例となります。

package com.example.demo.repository;

import com.example.demo.entity.User;

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

@Repository
public interface UserRepository extends JpaRepository<User, Long>{
}

JpaRepositoryのジェネリクスの第二引数にはUserエンティティの主キーの型を指定します。

 

もし、独自のSQLを記述したい場合はメソッド名を指定して@Query内にSQLを記述します。

package com.example.demo.repository;

import com.example.demo.entity.User;

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 UserRepository extends JpaRepository<User, Long>{

    @Query("SELECT c FROM User c WHERE c.id = :id")

    List<Customer> findAllById(@Param("id") Integer id);

}

 

テーブルから値の取得

それでは実際にテーブルから値を取得してみましょう。

適当な以下のようなコントローラーを作成して、リポジトリ経由でデータを取得してみます。

userテーブルからuser情報を取得する処理を記載してみましょう。

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;

@SpringBootApplication
@RestController

public class DemoJpaMysqlApplication {
    

    @Autowired
    UserRepository userRepository;

    @RequestMapping("/")
    String hello() {
        
Iterable<User> users = userRepository.findAll();
        
        for (User user : (Iterable<User>) users::iterator) {
            System.out.println(user.getName());
        }

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

}

 

出力結果は以下の通りです。

tarou
jirou

 

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
  1. インストール(eclipseプラグイン)
  2. クイックスタート
  3. プロジェクトの作成
  4. Spring Bootプロジェクトの作成
  5. Spring Bootプロジェクトの実行
  6. Spring BootでHello World!
  7. アノテーション一覧
  8. DB接続設定からエンティティおよびリポジトリの作成、値の取得まで(JPA編)
  9. DB接続設定や値の取得(JdbcTemplate編)
  10. ビューから値をモデルに格納しコントローラーで受け取る方法
  11. コントローラーにてモデルに値を格納してビューに渡す方法
  12. テンプレートエンジン
  13. ModelとModelAndViewの違い
  14. AOPの使用方法
  15. classpath: 内部ファイルの読み込み
  16. file: 外部ファイルの読み込み
  17. CSVファイルアップロード方法(Ajax)
  18. CSVファイルダウンロード方法(Ajax)
  19. Spring Bootプロジェクトのビルドと本番環境へのデプロイ方法(内部tomcat使用)
  20. Application.propertiesの環境依存設定の分割方法
  21. JPAにおけるEntityManagerの取得方法
  22. JPAにおけるjava.sql.Connectionの取得方法
  23. エラー一覧
  24. jarの引数を受け取る方法
  25. Spring BootでGmailからメール送信
  26. 複数のDBに接続する設定(Spring Boot & JPA編)
  27. ポート番号の変更
  28. Basic認証の実装と特定のURLに限定する方法
  29. Spring SecurityのBasic認証の無効化
  30. 独自のエラーページを定義する方法
  31. プロパティファイルの値やjar実行時の引数を取得する方法