スポンサーリンク

Microsoft SQL Server + Java + SpringBoot + JPAでデータ呼び出し

Microsoft SQL Server + Java + SpringBoot + JPAでデータ呼び出しJava
Microsoft SQL Server + Java + SpringBoot + JPAでデータ呼び出し
スポンサーリンク

前提条件

Microsoft SQL ServerとEclipsがダウンロードされていること。

Microsoft SQL Serverのダウンロードと設定方法はこちらとなります。

Microsoft SQL Serverのバックアップファイルをダウンロード

Microsoft SQL ServerのバックアップファイルをダウンロードしてDBを復元します。

公式サイトにアクセスしてOLTPデータのAdventureWorks2019.bakをダウンロードします。

AdventureWorks サンプル データベース - SQL Server
次の手順に従い、Transact-SQL (T-SQL)、SQL Server Management Studio (SSMS)、または Azure Data Studio を使用して、AdventureWorks サンプル データベースを SQL Server にダウンロードしてインストールします。

データベースを復元

SQL Server Management Studio Management Studio 19にログイン後、データベースを復元していきます。

データベースを右クリック → データベースの復元(R)を押下

先ほどダウンロードしたバックアップファイルをデバイスから追加します。

デバイス(E) → …をクリック

追加(A)を押下

さきほどダウンロードしたバックアップファイルを選択してOKボタンを押すと復元が開始されます

復元完了

復元されたかの確認を行う。

Spring Boot プロジェクトを作成

Eclipsを立ち上げます。

ファイル(F) → 新規(N) →プロジェクト(R)をクリック

Spring スターター・プロジェクトを選択

以下を入力

名前:spring_sqlserver_jpa

Java バージョン:11

パッケージ:com.example.spring_sqlserver_jpa

依存関係を選択します。

  • Spring Data JPA
  • MS SQL Server Driver
  • Thymeleaf
  • Spring Web

プロジェクトの作成完了

build.gradle

dependenciesに先設定した依存関係が追加されています。

plugins {
	id 'java'
	id 'org.springframework.boot' version '2.7.8'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	runtimeOnly 'com.microsoft.sqlserver:mssql-jdbc'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

データベースから値を取得して画面に表示する

ApplicationProperties

DBにアクセスするためプロパティファイルに以下を記入

spring.datasource.url=jdbc:sqlserver://localhost:53403;databaseName=AdventureWorks2019;encrypt=false;
spring.datasource.username=sa
spring.datasource.password=tokuty2023@

SQL Serverのポート番号

ポート番号はSql Server Configuration Managerを立ち上げて確認します。

DepartmentController.java

@Autowired DepartmentService departmentService;

@Autowiredを使用することでDepartmentServiceをインスタンス化して全件取得メソッドを呼び出しています。

model.addAttribute("departmentList", departmentList);

全件取得したデータを画面側で表示させるため、modelに登録します。

package com.example.spring_sqlserver_jpa;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class DpartmentController {
	@Autowired DepartmentService departmentService;

	@RequestMapping("/")
    public String index(Model model) {

        List<Department> departmentList = departmentService.findAllDepartment();
        model.addAttribute("departmentList", departmentList);
        return "index";
    }
}

Department.java

DBから取得した値をモデルに格納していきます。

package com.example.spring_sqlserver_jpa;

import java.util.Date;

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

@Entity
@Table(name="Department", schema="Humanresources")
public class Department {
	@Id
	private Short departmentID;

	private String name;

	@Column(name = "groupname")
	private String groupName;

	@Column(name = "modifieddate")
	private Date modifiedDate;

	public Short getDepartmentID() {
        return departmentID;
    }

    public void setDepartmentID(Short departmentID) {
        this.departmentID = departmentID;
    }

	public String getName() {
        return name;
    }

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

	public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

	public Date getModifiedDate() {
        return modifiedDate;
    }

    public void setModifiedDate(Date modifiedDate) {
        this.modifiedDate = modifiedDate;
    }
}

DepartmentRepository.java

@Repository
public interface DepartmentRepository extends JpaRepository <Department, Integer>{
}

JpaRepositoryを継承することでJpaにて実装された機能を使うことができるようになります。

今回データを全件取得するfindAll()メソッドを使います。

package com.example.spring_sqlserver_jpa;

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

@Repository
public interface DepartmentRepository extends JpaRepository <Department, Integer>{
}

DeprartmentService.java

findAll()メソッドを使うことでデータを全件取得しています。

package com.example.spring_sqlserver_jpa;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DepartmentService {

	@Autowired
	DepartmentRepository departmentRepository;

    public List<Department> findAllDepartment() {
        return departmentRepository.findAll();
    }
}

index.html

DepartmentController.javaでmodelに登録したdepartmentsをテンプレートエンジンの機能であるth:eachを使用して画面に一覧表示します。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Demo</title>
</head>
<body>
	<table>
       <tr th:each="departments : ${departmentList}" th:object="${departments}">
           <td th:text="*{departmentID}"></td>
           <td th:text="*{name}"></td>
           <td th:text="*{groupName}"></td>
           <td th:text="*{modifiedDate}"></td>
       </tr>
    </table>
</body>
</html>

Spring Boot Appの実行

作成したspring_sqlserver_jpaを実行していきます。

作成したプロジェクト(demo)を右クリックして「実行」 → 「Spring Boot App」を押下

ブラウザのURL欄に「http://localhost:8080/」を入力

データベースにアクセスしてテーブルから取得した値の表示ができました!

spring画面

最終的な構成

必要な部分のみに省略しています。

spring_sqlserver_jpa
└─src
    ├─main
       ├─java
       │  └─com
       │      └─example
       │          └─demo
       │                  springSqlserverJpaApplication.java
       │                  DepartmentController.java
       │                  Department.java
       │                  DepartmentRepository.java
       │                  DepartmentService.java
       │
       └─resources
          │  application.properties
          │
          ├─static
          └─templates
                index.html
  

今回学んだこと

SQL Serverでのデータ復元方法

Spring Boot + SQL Server + JPAでのデータ呼び出し

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