获取/关闭DataSource连接的正确方法

时间:2015-04-03 17:06:26

标签: java mysql jdbc datasource

我正在开发一个关于eclipse的动态Web项目。

以下是使用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 个答案:

答案 0 :(得分: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(...)) {...}