データベース接続4
[Webアプリケーション] データベース接続4
Javaでデータベースの接続方法を学習したので、実際にスケジュールアプリのプログラミングを開始する準備をしましょう。
スケジュールアプリのプログラムは、DTO・DAOパターンを採用し、下記4つのクラスで構成します。
・Mainクラス ... ユーザー情報や、スケジュールの入力処理のみを行う。
・ビジネスロジック ... 実際の処理をまとめたクラス。メインクラスから呼び出されるプログラムを作成する。
・DAO(Data Access Object) ... データベースにアクセスする処理をまとめたクラス。
・DTO(Data Transfer Object) ... データベースから取得したデータを格納するためのクラス。格納したデータをビジネスロジックに渡すために使用する。
まずは、下記サンプルを参考に簡単なDTO・DAOパターンのプログラムを作成してみましょう。
・実行するJavaクラス
public static void main(String[] args) { String comma = ","; //DAOをインスタンス化 Common_DAO cd = new Common_DAO(); //DTOでユーザーテーブルのデータを取得 List<User_DTO> list = cd.getUserInfo(); System.out.println("ユーザーテーブルを表示"); if(list != null) { for(int i = 0; i < list.size(); i++) { System.out.print(list.get(i).getUserID()); System.out.print(comma); System.out.print(list.get(i).getUserName()); System.out.print(comma); System.out.print(list.get(i).getGender()); System.out.print(comma); System.out.println(list.get(i).getEmail()); } }else{ System.out.print("データの取得失敗"); } }
・User_DTO クラス(DTO)
データベースの値を格納するメンバ変数(フィールド)とゲッター、セッターを用意しただけのクラス。
public class User_DTO { //フィールド private String userID; private String userName; private String gender; private String email; //ゲッター、セッター public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
・Common_DAO クラス(DAO)
データベース接続3で、mainメソッドに書いたデータベースの接続処理をメソッド化して、まとめたクラス。
public class Common_DAO { // フィールド private Connection con; // コンストラクタ public Common_DAO () { getConnection(); } // メソッド //------------------------------------------------------------ // getConnection:データベース接続 // 引数 :なし // 戻り値:なし //------------------------------------------------------------ private void getConnection() { try { //JDBCドライバーのロード Class.forName("com.mysql.cj.jdbc.Driver"); }catch(ClassNotFoundException e) { e.printStackTrace(); } //URL、ユーザー名、パスワードに値を設定 String url = "jdbc:mysql://localhost/データベース" + "?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false"; String user = "ユーザー"; String pw = "パスワード"; try { con = DriverManager.getConnection(url, user, pw); }catch(SQLException e){ e.printStackTrace(); } } //------------------------------------------------------------ // close :データベース接続をクローズ // 引数 :なし // 戻り値:なし //------------------------------------------------------------ private void close() throws SQLException{ if(con != null) { con.close(); } } //------------------------------------------------------------ // getUserInfo:ユーザーテーブルのデータを取得 // 引数 :なし // 戻り値:ユーザー情報 (List) //------------------------------------------------------------ public List<User_DTO > getUserInfo() { //return用のリスト(DTOをリストに格納していく) List list = new ArrayList<User_DTO >(); //プリペアードステートメント PreparedStatement st = null; //リザルトセット ResultSet rs =null; try { //SQL文の生成 StringBuilder buf = new StringBuilder(); buf.append(" SELECT "); buf.append(" COL1 "); buf.append(" ,COL2 "); buf.append(" ,COL3 "); buf.append(" ,COL4 "); buf.append(" FROM "); buf.append(" SAMPLE "); //preparedStatementオブジェクトの生成 st = con.prepareStatement(buf.toString()); rs = st.executeQuery(); while(rs.next()) { User_DTO dto = new User_DTO(); dto.setUserID(rs.getString("COL1")); dto.setUserName(rs.getString("COL2")); dto.setGender(rs.getString("COL3")); dto.setEmail(rs.getString("COL4")); list.add(dto); } }catch(SQLException e) { e.printStackTrace(); }finally { //リソースの開放 try { if(st != null) { st.close(); } if(rs != null) { rs.close(); } close(); }catch(SQLException e) { e.printStackTrace(); } } return list; } }
さいたま市南区の武蔵浦和駅(中浦和駅)周辺でプログラミングを勉強したい・興味のある方に、
個別指導でJavaのプログラミングを教えています。生徒さまはIT・プログラミング未経験の社会人の方がほとんどです。
▼興味があれば、下記リンクをご確認ください。