HSQLDBサーバーが動いたら、MyBootAppを起動する。
起動すると、自動的に3つのレコードが書き込まれる。
起動するたびにレコードが書き込まれるのはまずいので、以下のコードを削除する。
MyDataController.java
@PostConstruct
public void init() {
MyData d1 = new MyData();
d1.setName("tuyano");
d1.setAge(123);
d1.setMail("syoda@tuyano.com");
d1.setMemo("this is data!");
repository.saveAndFlush(d1);
MyData d2 = new MyData();
d2.setName("hanako");
d2.setAge(15);
d2.setMail("hanako@flower.com");
d2.setMemo("this is data!");
repository.saveAndFlush(d2);
MyData d3 = new MyData();
d3.setName("sachiko");
d3.setAge(37);
d3.setMail("sachiko@happy");
d3.setMemo("this is data!");
repository.saveAndFlush(d3);
}
データベースマネージャを起動するBATファイルも作成する。
デスクトップにmanager.bat を作成する。
cd C:\pleiades\hsqldb-2.4.1\hsqldb\data java -classpath ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManager
データベースマネージャを起動すると、接続先設定の画面が出るので、以下のように入力する。

データベースのデータを毎回消さないようにするために、application.properties に設定を1行追加する。
spring.datasource.url=jdbc:hsqldb:hsql://localhost/mydata spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.HSQLDialect spring.jpa.hibernate.ddl-auto=update
DAOを使ったデータベースアクセス
Spring Boot ではリポジトリを使って容易にデータベースアクセスできる。
Java標準のJAPを使う場合は、一般的にDAOを使ってデータベースアクセスを実装する。
まずDAOインタフェースを作成する。
package jp.abc;
import java.io.Serializable;
import java.util.List;
public interface MyDataDao <T> extends Serializable {
public List<T> getAll();
}
そして、DAOの実装クラスを作成する。
package jp.abc;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import jp.abc.MyData;
import jp.abc.MyDataDao;
public class MyDataDaoImpl implements MyDataDao<MyData> {
private EntityManager entityManager;
public MyDataDaoImpl() {
super();
}
public MyDataDaoImpl(EntityManager entityManager) {
this();
this.entityManager = entityManager;
}
@Override
public List<MyData> getAll() {
Query query = entityManager.createQuery("from MyData");
List<MyData> list = query.getResultList();
entityManager.close();
return list;
}
}
コントローラには、以下のコードを追加する。
URL: /dao にアクセスしたときに、DAO経由でデータベースアクセスを実行する。
@PersistenceContext
EntityManager entityManager;
MyDataDao<MyData> dao;
@PostConstruct
public void init() {
dao = new MyDataDaoImpl(entityManager);
}
@RequestMapping("/dao")
public ModelAndView dao(ModelAndView mav) {
mav.setViewName("dao");
mav.addObject("msg", "DAOを使ったサンプルです。");
List<MyData> list = dao.getAll();
mav.addObject("datalist", list);
return mav;
}
HTMLテンプレートを dao.html として用意する。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>top page</title>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<style type="text/css">
h1 {
font-size: 18pt;
font-weight: bold;
color: gray;
}
body {
font-size: 13pt;
color: gray;
margin: 5px 25px;
}
pre {
border: solid 3px #ddd;
padding: 10px;
}
tr {
margin: 5px;
}
th {
padding: 5px;
color: white;
background: darkgray;
}
td {
padding: 5px;
color: black;
background: #f0f0f0;
}
.err {
color: red;
}
</style>
</head>
<body>
<h1>MyData page</h1>
<p th:text="${msg}"></p>
<hr />
<table>
<tr>
<th>ID</th><th>名前</th><th>メール</th><th>年齢</th><th>メモ</th>
</tr>
<tr th:each="obj : ${datalist}">
<td th:text="${obj.id}"></td>
<td th:text="${obj.name}"></td>
<td th:text="${obj.mail}"></td>
<td th:text="${obj.age}"></td>
<td th:text="${obj.memo}"></td>
</tr>
</table>
</body>
</html>