SpringBootとHibernateでmysqlをselectするサンプルです。
Hibernate(ハイバネート)はオープンソースのフリーソフトです。
オブジェクト関係マッピングと呼ばれます。(ORM,Object-relational mapping)
確認環境 ・Spring Boot 2.5 ・JDK 11 ・STS 4 |
目次
サンプル | 環境 |
1.pom.xmlの設定 | |
2.application.propertiesの設定 | |
3.hibernate-config.xmlの設定 | |
4.エンティティのクラス(Syain.java) | |
5.レポジトリのクラス(SyainRepository.java) | |
6.コントローラのクラス(MainController.java) | |
画面の確認 |
環境
今回作成/修正するファイルは以下の赤枠の部分です。
以下は、使用するMySQLのテーブルです。テーブル名は「syain」です。
id | name | romaji |
---|---|---|
1 | 鈴木 | suzuki |
2 | 田中 | tanaka |
3 | 佐藤 | sato |
1.pom.xmlの設定
pom.xmlにhibernatetとmysqlのライブラリを追加します。
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-annotations -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.application.propertiesの設定
DB情報は、hibernate-config.xmlに記述します。
server.port = 8765
3.hibernate-config.xmlの設定
hibernate-config.xmlにhibernateの設定を記述しています。ファイル名は任意です。
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3309/testphp</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
8行目のtestphpはデータベース名です。ポート番号は3309にしています。
以下は、redhatのHibernateの設定のリンクです。
https://access.redhat.com/documentation/ja-jp/red_hat_jboss_web_server/1.0/html/hibernate_core_reference_guide/tutorial#tutorial-firstapp-configuration
4.エンティティのクラス(Syain.java)
エンティティのクラスです。Syainテーブルのデータを格納します。
package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
@Table(name="syain")
public class Syain {
@Id
private Integer id;
private String name;
private String romaji;
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public String getRomaji() {
return romaji;
}
}
5.レポジトリのクラス(SyainRepository.java)
レポジトリのクラスです。SQLを実行します。
package com.example.demo;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.springframework.stereotype.Repository;
@Repository
public class SyainRepository {
@SuppressWarnings("unchecked")
public List<Syain> findAll() {
List<Syain> syainList = null;
SessionFactory sf = new Configuration()
.configure("hibernate-config.xml")
.addAnnotatedClass(Syain.class)
.buildSessionFactory();
Session session = sf.getCurrentSession();
try {
session.beginTransaction();
syainList = session.createQuery("from Syain").list();
session.getTransaction().commit();
} catch (Exception e) {
session.getTransaction().rollback();
e.printStackTrace();
} finally {
sf.close();
}
return syainList;
}
}
17行目は、Hibernateの設定ファイル(hibernate-config.xml)を読み込んでいます。
25行目のトランザクション(beginTransaction)は必要です。
26行目は、Syainテーブルからデータを取得しています。
35行目は、取得したデータをリストで返します。
6.コントローラのクラス(MainController.java)
コントローラのクラスです。
package com.example.demo;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MainController {
@Autowired
private SyainRepository syainRepository;
@GetMapping("/test1")
public List<Syain> get() {
return syainRepository.findAll();
}
}
7行目のRestControllerアノテーションは、メソッドの戻り値を画面に表示します。
14行目は、SyainRepositoryクラスのfindAllメソッドを実行します。
画面の確認
1.以下のURLにアクセスします。
http://localhost:8765/test1
2.画面にJSON形式で以下のように表示されます。
[{"id":1,"name":"鈴木","romaji":"suzuki"},{"id":2,"name":"田中","romaji":"tanaka"},{"id":3,"name":"佐藤","romaji":"sato"}] |
関連の記事
SpringBoot JPAでMySQLにselectするサンプル
SpringBoot MySQL+JDBCでselectするサンプル
SpringBoot MySQL+JDBCでDB更新するサンプル