get/close DataSource连接的正确方法

The correct way to get/close DataSource connection

我正在 eclipse 上开发一个动态 web 项目。

下面是使用 DataSource 连接 MySQL 的示例。 这是正确的方法吗?我的意思是在 Servlet 中获取连接是否正常?

此外,我发现这种 get/close 连接的方式很乏味,因为每次我想要 get/close 连接时,我都需要编写完全相同的代码部分。我认为应该有更好的方法。有人可以给我一些建议吗?

谢谢!

@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();
                    }
            }
        }
    }
}

从 Java 7 开始,您可以使用 try-with-resource(JDBC api 已更新以实现 Autocloseable)。

The try-with-resources statement is a try statement that declares one or more resources. A resource is an object that must be closed after the program is finished with it

例如

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