• ベストアンサー

beansの作成方法

データベースと連携したwebアプリケーションを作っているのですが、各JAVAファイルのソース中にあるデータベースとの接続部分をbeans化しろと言われました。 String url="jdbc:postgresql://localhost/#######/"; String user="#######"; String pass="****"; Class.forName("org.postgresql.Driver"); Connection con=DriverManager.getConnection(url,user,pass); Statement stm=con.createStatement(); →String sql="delete from a_table where id='"+id+"'"; →int num=stm.executeUpdate(sql); stm.close(); con.close();  →の部分は各ファイルによって若干異なるのですが・・・いまいちbeansというものをよく理解しておらず、単純に上の6行だけ別ファイルで作ってインポートしてもうまくいきません。コンパイルでシンボルを解決できませんと言われてしまいます。もちろん、直接各ファイル内に上の構文を書けば動くのですが・・・。  この場合、beansってどういう風に書けば、また読み込ませればいいんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nice21cy
  • ベストアンサー率100% (1/1)
回答No.2

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectionManager { Connection getConnect() { String url = "jdbc:postgresql://localhost/#######/"; String user = "#######"; String pass = "****"; try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection(url, user, pass); return con; } catch (Exception e) {} return null; } } // ------------------------------------------------ import java.sql.Statement; import java.sql.Connection; class UseCon { void execut() { String id = "aaa"; String sql = "delete from a_table where id='" + id + "'"; Connection con = null; Statement stm = null; try { con = (new ConnectionManager()).getConnect(); stm = con.createStatement(); int num = stm.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); } finally { try { if (stm != null) { stm.close(); } if (con != null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } すみませんが、 こんな風にしたらどうですか?

rusya
質問者

お礼

遅くなりましたが、回答ありがとうございます。 どうにか形になりました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

私もJavaBeansってよくわからないんですよね~(いいのか>自分) JSPで使わないってことは、単なる部品化・共通化しろってことだと思うんで、こんなんでいいんじゃないかな と思います。 本当は、Serializableをインプリメントして、SerialVersionUIDを持たないと駄目みたいです。(Eclipseさんは警告してきます) あ、もちろん、ちゃんとエラー処理は入れてください。 public class DBAccessBean{   private final String default_url = "jdbc:postgresql://localhost/#######/";   private final String default_user = "#######";   private final String default_pass = "****";   private String url = null;   private String user = null;   private String pass = null;   private Connection con = null;   private Statement stm = null;   public DBAccessBean(){    this.url = this.default_url;    this.user = this.default_user;    this.pass = this.default_pass;   }   public DBAccessBean(String url, String user, String pass){    this.url = url;    this.user = user;    this.pass = pass;   }   public Connection getConnection(){    Class.forName("org.postgresql.Driver");    Connection con=DriverManager.getConnection(url,user,pass);    this.con = con;    return con;   }   public Statement createStatement(){    Statement stm=this.con.createStatement();   }   →の処理の数だけ用意する   public int delObject(String id){    String sql="delete from a_table where id='"+id+"'";    int num=this.stm.executeUpdate(sql);    return num;   }   public void closeConnection(){    this.con.close();   }   public void closeStatement(){    this.stm.close();   } }

rusya
質問者

お礼

遅くなりましたが、回答ありがとうございます。 もう少しbeansを勉強しようと思います(苦笑)

すると、全ての回答が全文表示されます。
noname#49428
noname#49428
回答No.1

言われたその方に聞くことはできないのですか? ファイルでインポートということは、JSPでしょうか? JavaBeansとは、以下の条件を満たすもののことです。 1. public 宣言されているクラスであること。 2. デフォルトコンストラクタ(引数を持たないコンストラクタ)があること。 3. java.io.Serializable インタフェースを implements していること。 一般的には、ValueObjectとして使うのですが、おそらくその方は、部品化しろということなのでしょう。 実行するSQLだけが違うのであれば、Templateパターンを使うのが一番楽じゃないでしょうか。

参考URL:
http://www.javafaq.jp/S132.html
rusya
質問者

お礼

回答ありがとうございます。 beansをインポートしているのはJSPでなく、サーブレットです。部品化しろというのはたぶんその通りだと思うのですが、beansはずいぶん前に一回だけ触ったきりなので、記述方法も含めほとんど分からない状態です・・・。

すると、全ての回答が全文表示されます。

関連するQ&A