実現したいこと
先日,WEBアプリケーションの勉強がてら,簡単なWEBショッピングを作成しました.現在は,リファクタリングの最中なのですが,DAO周りのコードに重複する部分が見つかりました.よって処理をまとめたいのですが,いいアイデアが思い浮かびません.皆様の考えを共有してはいただけないでしょうか.
該当のソースコード
Java
1// DAOInterface.java 簡単化のため省略 2package pkg.dao; 3 4import java.sql.Connection; 5import java.sql.DriverManager; 6import java.sql.SQLException; 7 8public interface DAOInterface { 9 10 static Connection createConnection() throws SQLException { 11 return DriverManager.getConnection( // 省略... 12 } 13 14 void open() throws SQLException; 15 16 void close() throws SQLException; 17} 18
Java
1// UserDAO.java 同じく簡単化のため省略 2package pkg.dao; 3 4import java.sql.Connection; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7import java.sql.Statement; 8 9import pkg.entity.UserEntity; 10 11public class UserDAO implements DAOInterface{ 12 13 private Connection connection; 14 private Statement statement; 15 16 public UserEntity find(int userId) { 17 UserEntity user = null; 18 try { 19 open(); 20 user = /* ID検索でヒットしたユーザ */; 21 close(); 22 catch(SQLException e){/*例外処理*/} 23 return user; 24 } 25 26 // ほかにも上記のようにSQLを使った処理があるよ! 27 28 @Override 29 public void open() throws SQLException { 30 connection = DAOInterface.createConnection(); 31 statement = connection.createStatement(); 32 } 33 34 @Override 35 public void close() throws SQLException { 36 statement.close(); 37 connection.close(); 38 } 39}
詳細
上記UserDAO.java
のほかにもDAOがいくつかあります.結論何が言いたいかというと,それらのDAOには共通して以下の処理が書かれています.
Java
1 // 1 2 private Connection connection; 3 private Statement statement; 4 5 // 2 6 @Override 7 public void open() throws SQLException { 8 connection = DAOInterface.createConnection(); 9 statement = connection.createStatement(); 10 } 11 12 // 3 13 @Override 14 public void close() throws SQLException { 15 statement.close(); 16 connection.close(); 17 }
今はせいぜい数個のDAOクラスなのでいいのですが,(あまりないと思いますが)これが100個200個となるとまとめたくなってきます.
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/14 03:28 編集
2018/08/14 04:04
2018/08/14 05:09