2012-02-16 64 views
0

當前,我加載下面的自定義驅動程序(TestDriver.java),獲取連接,創建語句,執行查詢,獲取結果並關閉連接。我打開並關閉每個查詢的連接。這是常見的做法還是有共享開放連接的標準方式?自定義java.sql.Driver實現連接處理

public static void main(String[] args) { 
     Class.forName("com.sql.TestDriver"); 
     java.sql.Connection conn = DriverManager.getConnection("jdbc:test://8888/connectme", props); 
     Statement stmt = conn.createStatement; 
     ResultSet rs = stmt.executeQuery("select * from table"); 
     //loop through rs and pull out needed data 
     conn.close(); 
    } 


    public class TestDriver implements java.sql.Driver{ 
     private final TestSchema schema; 
     private Properties props = null; 
     static { 
      try { 
       DriverManager.registerDriver(new TestDriver()); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 

     protected TestDriver() throws SQLException { 
      schema = TestSchemaFactory.getInstance().getDbSchemaFromFile(SCHEMA_FILE); 
      //loads in and parses a file containing tables, columns used for business logic 
     } 
     public Connection connect(String url, Properties info) 
       throws SQLException { 
      TestSqlConnection conn=null; 
      //connect logic here 
      return conn; //will return an instance of TestSqlConnection 
     } 

    @Override 
    public boolean jdbcCompliant() { 
     return false; 
    } 
} 

回答

1

是的,使用數據庫連接池更爲常見。這將允許連接重複使用而不需要開銷或關閉/重新打開。下面是DBCP一個鏈接,是一個數據庫連接池的一種實現方式:http://commons.apache.org/dbcp/

1
  1. 理想情況下,你應該寫一個單獨的工廠類(可以是靜態的) 說連接工廠返回一個連接對象。
  2. 我也看到你不使用,同時創造 connection.I的try/catch/finally塊強烈建議關閉在最後 子句中的連接,否則你程序可以從連接泄漏遭受如有 引發異常,並導致突然行爲。
  3. 理想情況下應關閉操作之後的連接是基於最終 clause.In Web應用程序完成,如果您使用連接池 然後關閉連接將返回連接返回到池和 將可供使用。
+0

偉大的評論。我的Java主只是一個例子。你所有的評論都是有效的。 – c12 2012-02-16 02:38:26