Java DaoとDtoでDBを検索するサンプル

JavaのDaoとDtoでDBを検索するサンプルです。

確認環境
・Java 8
・Eclipse 4.8

目次

DAOとDTOとDBの関係

DAOとDTOとDB(データベース)の関係の概念図です。

DAOとは

  • Data Access Objectの略です。
  • データベースの接続情報を持ち、データベースにアクセスしてデータの取得や操作を行います。
  • 取得した値はDTOに格納します。
  • 読み方はダオです。
  • 以下は、wikipediaのDAOのリンクです。
    https://ja.wikipedia.org/wiki/Data_Access_Object

DTOとは

  • Data Transfer Objectの略です。
  • データベースの値を格納します。
  • 一般的にゲッターセッターを使用して値を操作します。
  • エンティティとも呼ばれます。
  • JavaBeansとも呼ばれます。
  • 1つのDtoのインスタンスは、データベースの1行のイメージです。
  • 読み方はディーティーオーです。
  • 以下は、wikipediaのDTOのリンクです。
    https://ja.wikipedia.org/wiki/Data_Transfer_Object

DTOのクラスのサンプル

DTOのクラスのサンプルです。

package test1;

public class SyainDto {
    private int id;
    private String name;
	private String romaji;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getRomaji() {
		return romaji;
	}
	public void setRomaji(String romaji) {
		this.romaji = romaji;
	}
}

4~6行目は、値です。
8~25行目は、値を取得するゲッターと値に設定するセッターです。

 

DAOのクラスのサンプル

DAOのクラスのサンプルです。

package test1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class SyainDao {
	private static final String URL 
    	= "jdbc:mysql://localhost:3306/testphp?serverTimezone=JST";
	private static final String USER = "root";
	private static final String PASS = "";
	private static final String SQL 
		= "select * from syain;";

    public List<SyainDto> findAll() {
        List<SyainDto> syainList = new ArrayList<>();
        
	    try(Connection conn = 
	            DriverManager.getConnection(URL, USER, PASS);
	        PreparedStatement ps = conn.prepareStatement(SQL)){

	        try(ResultSet rs = ps.executeQuery()){
	            while (rs.next()) {
	            	SyainDto sd = new SyainDto();
	            	sd.setId(rs.getInt("id"));
	            	sd.setName(rs.getString("name"));
	            	sd.setRomaji(rs.getString("romaji"));
	            	syainList.add(sd);
	            }           
	        }
	    } catch (SQLException e) {
	        e.printStackTrace();
	    } catch (Exception e) {
	        e.printStackTrace();
	    } finally {
	    }
        return syainList;
    }
}

12~15行目は、DBに接続するURL、ユーザ、パスワードの情報です。
20行目は、Dtoのクラスのリストを定義しています。
28~31行目は、Dtoのクラスをインスタンス化して、DBから取得した値をセットしています。1つのインスタンスがDBの1行のイメージです。
32行目は、Dtoのインスタンスをリストにセットしています。

 

利用するクラスのサンプル

上記クラスを利用するクラスです。

package test1;

import java.util.List;
import test1.SyainDao;
import test1.SyainDto;

public class Test1 {
    public static void main(String[] args) {        
    	SyainDao syainDao = new SyainDao();
    	List<SyainDto> sd = syainDao.findAll();
    	
        for (SyainDto s: sd) {
            System.out.println(s.getId());
            System.out.println(s.getName());
            System.out.println(s.getRomaji());
        }
    }
}

9行目は、Daoのクラスをインスタンス化しています。
10行目は、メソッドを実行しDtoのリストを取得しています。
12~15行目は、拡張for文でDBから取得した値を表示しています。

環境

XAMPPのMySQLを使用しています。

XAMPPをインストールする手順(Windows10)
XAMPP phpMyAdminでデータベースを作成/削除する手順
XAMPP phpMyAdminでテーブルを作成/データを登録する

関連の記事

Java MySQLにJDBC接続してselectするサンプル
Java MySQLにJDBC接続してinsert/update/deleteするサンプル
Java 大量データを登録/更新するサンプル(addBatchメソッド)

△上に戻る