2013-02-12 63 views
2

我的代碼連接到數據庫使用BasicDataSource如下,參考Ans我想我的代碼創建一個物理連接數據庫ONCE,然後提供池連接後。 我的問題是,我的代碼是否提供池連接?,如果是這樣,我應該保持代碼的連接部分在以下方法或在構造函數中提供高效的池?以及班級狀態的註釋應該如何? @Stateful?如何高效地實現連接池?

 // Connection section start 
     BasicDataSource bs = new BasicDataSource(); 
     PreparedStatement ps = null; 
     Connection con = null; 
     try { 
      bs.setDriverClassName("com.mysql.jdbc.Driver"); 
      bs.setUrl("jdbc:mysql://localhost/myDb"); 
      bs.setUsername("root"); 
      bs.setPassword(""); 
      con = bs.getConnection(); 
      System.out.println("Connecting"); 
     // Connection section end 

      ps = con.prepareStatement("Select *" 
        + " from Client WHERE Username = ? "); 
      ps.setString(1, username); 
      ResultSet r = ps.executeQuery(); 
      if (r.next()) { 
       con.close(); 
       return "true"; 
      } 
+2

使用Apache Commonds DBCP連接池。不要自己寫這些東西。 – EJP 2013-02-12 01:12:38

+0

@EJP,哪些東西?你會舉個例子嗎? – 2013-02-12 01:29:53

回答

4

BasicDataSource實現連接池。但是,如果您每次創建一個新池,那麼它就沒用了。一次創建數據源並在任何地方重複使用。

通常情況下,在Java EE中你注入了的數據源。也就是說,容器爲您管理數據源。在豆中注入數據源非常簡單

@Resource 
private DataSource movieDatabase; 

請參閱this example。但是,配置數據源取決於您正在使用的容器。相同的數據源可以用於有狀態和無狀態的bean。