2015-04-03 90 views
0

我正在開發一個eclipse上的動態Web項目。獲取/關閉DataSource連接的正確方法

下面是使用DataSource連接MySQL的示例。 這是正確的方法嗎?我的意思是在Servlet中獲得連接是正常的?

此外,我發現這種方式來獲得/關閉連接是單調乏味的,因爲每次我想要獲取/關閉連接時都需要編寫完全相同的代碼部分。我認爲應該有更好的辦法。有人能給我一些建議嗎?

謝謝!

@WebServlet(name="HelloUser", urlPatterns={"/hellouser"}) 
public class HelloUserServlet extends HttpServlet{ 
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 

      DataSource ds = MyDataSourceFactory.getMySQLDataSource(); 
      Connection con = null; 
      Statement stmt = null; 
      ResultSet rs = null; 
      try { 
       con = ds.getConnection(); 
       stmt = con.createStatement(); 
       rs = stmt.executeQuery(...); 
       ... 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      }finally{ 
        try { 
         if(rs != null) rs.close(); 
         if(stmt != null) stmt.close(); 
         if(con != null) con.close(); 
        } catch (SQLException e) { 
         e.printStackTrace(); 
        } 
      } 
     } 
    } 
} 
+1

簡短的回答:第龍答:首先學習了'嘗試與 - resources'結構,第二考慮學習更高級別的JDBC庫,如[春季JDBC(HTTP://docs.spring。 IO /彈簧/文檔/電流/彈簧的框架參考/ HTML/jdbc.html)。 – 2015-04-03 17:15:22

+0

謝謝!我將嘗試Spring JDBC。 – cht 2015-04-04 03:04:29

回答

3

從Java 7開始,您可以使用try-with-resource(更新JDBC api以實現Autocloseable)。

try-with-resources語句是聲明一個 或更多資源的try語句。資源是在程序完成後必須關閉的對象

E.g.

try (Connection con = ds.getConnection(); 
    Statement stmt = con.createStatement(); 
ResultSet rs = stmt.executeQuery(...)) {...} 
+0

謝謝!有用。 – cht 2015-04-04 03:04:44