Daoについてです。
以下の設定で質問いたします。
設定
Dao.java
→DB接続をコンストラクタでする。
SubDao.java(Daoを継承したクラス)
→selectなどの処理をする
JavaBeans
→データを格納する
java
1package work; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.ResultSet; 6import java.sql.Statement; 7 8public class Dao { 9 10 private String driver; 11 private String url; 12 private String user; 13 private String password; 14 private Connection connection; 15 private Statement statement; 16 private ResultSet resultset; 17 18 /** 19 * コンストラクタ 20 * @param driver ドライバー 21 * @param url URL 22 * @param user ユーザー名 23 * @param password パスワード 24 */ 25 public Dao(String driver, String url, String user, String password) { 26 this.driver = driver; 27 this.url = url; 28 this.user = user; 29 this.password = password; 30 } 31 32 /** 33 * 引数なしのコンストラクタ 34 * 既定値を使用する 35 */ 36 public Dao() { 37 driver = "ドライバー"; 38 url = "jdbc:mariadb://localhost:3306/DB名"; 39 user = "ユーザ名"; 40 password = "パスワード"; 41 } 42 43 /** 44 * データベースへの接続を行う 45 */ 46 public synchronized void open() throws Exception { 47 Class.forName(driver); 48 connection = DriverManager.getConnection(url, user, password); 49 statement = connection.createStatement(); 50 } 51 52 /** 53 * SQL 文を実行した結果の ResultSet を返す 54 * @param sql SQL 文 55 */ 56 public ResultSet getResultSet(String sql) throws Exception { 57 if ( statement.execute(sql) ) { 58 return statement.getResultSet(); 59 } 60 return null; 61 } 62 63 /** 64 * SQL 文の実行 65 * @param sql SQL 文 66 */ 67 public void execute(String sql) throws Exception { 68 statement.execute(sql); 69 } 70 71 /** 72 * データベースへのコネクションのクローズ 73 */ 74 public synchronized void close() throws Exception { 75 if ( resultset != null ) resultset.close(); 76 if ( statement != null ) statement.close(); 77 if ( connection != null ) connection.close(); 78 } 79}
SubDaoクラスの書き方について質問です。
自分の中で、Daoはservletの中身をDB接続とそれ以外に切り離したものだと考えてます。
servletはもともとHttpServletを継承しています。
クラスの中で継承は重複できないので、Daoを継承する形で記述ができないです。
ということは、servletを単純に切り離すとはならないということだと思います。
doget、dopostが使えない状況でどういう記述の仕方で呼び出すのかがわからないです。
考えたこと
クラスを増やしてさらに継承させる?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/05 11:52