何时使用DAO模式关闭SQL连接?

时间:2014-10-21 05:54:36

标签: java mysql jdbc

我正在构建一个REST服务,其中包含的代码如下所示:

@PUT
@Produces(MediaType.APPLICATION_XML)
public Response updateOrder(        
        @HeaderParam("user") String user
        ){

    CoffeeOrderDAO coffeeDAO = new CoffeeOrderDAOImpl();

    ....

    coffeeDAO.method1();

    ....

    coffeeDAO.method2();

    ....

CoffeeOrderDAOImpl

public class CoffeeOrderDAOImpl implements CoffeeOrderDAO{

Context ctx;
DataSource ds;
Connection conn;

public CoffeeOrderDAOImpl(){

    try {
        ctx = new InitialContext();
        ds = (DataSource)ctx.lookup("java:comp/env/jdbc/coffeeDB");
        conn = ds.getConnection();

    } catch(SQLException e){
        System.out.println("Exception:" + e);                           
    } catch (NamingException ne) {

    }
}

public String method1() {

}

public String method2() {

}

我的问题是,在调用这两种方法之前,我应该在两个method1()method2()中关闭连接并创建一个新的CoffeeOrderDAO对象吗?

OR

对两种方法使用相同的CoffeeOrderDAO对象,只关闭method2()

中的连接

第二个选项似乎很奇怪,因为知道连接何时关闭变得更加复杂。

创建多个CoffeeOrderDAO对象是否合适?或者我错过了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果有的话,你至少应该使用一些抽象而不是JDBC。你不应该自己处理错综复杂的连接。

查看this SO答案,了解此类工具的建议。这些工具为你做了所有繁重的工作。

除了使代码更容易出错之外,使用这些工具之一将使代码更具可读性,因为它将包含更少的样板代码