Servlet/JSPの古き良きDAO/DTOパターン
SpringBootでDB接続といえば、MybatisやJPA、Doma2などのO/Rマッパーが現場では選択されます。
(参考:SpringBootのDB接続方式を決定する)
ですが、Servlet/JSP時代の古き良きDAO/DTOパターンもそのまま使うことができます。
実装例
ライブラリの読み込み
データベースに併せてJDBCドライバを依存関係に追加します。
<dependencies>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8-production</artifactId>
<type>pom</type>
</dependency>
</dependencies>
記述したのち、Maven install or Gradle install を実行します。
DAO/DTOを実装する
例 BOOKテーブルにSELECT文を実行する
public class BookDao {
public static List<Book> findAll() {
// DB接続
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "login_user",
"login_password");
// SQL実行
PreparedStatement ps = connection.prepareStatement("SELECT bk.book_id, bk.book_name FROM book");
ResultSet resultSet = ps.executeQuery();
// 実行結果取得
List<Book> bookList = new ArrayList<>();
while (resultSet.next()) {
Book book = new Book();
book.setBookId(resultSet.getString("book_id"));
book.setBookName(resultSet.getString("book_name"));
bookList.add(book);
}
return bookList;
}
}
エラー処理は割愛させていただきました。
public class BookDto {
private String bookId;
private String bookName;
}
コントローラーから呼び出す
本来は@Serviceなクラスを経由するべきですが、ここでは直接Controllerに記述することにします。
@RestController
public class BookController {
@GetMapping("/books")
public String books() {
List<Book> books = BookDao.findAll();
// ...
// (割愛)
// ...
}
}