如何在 jooq 中管理 DSLContext? (关闭连接)
How to manage DSLContext in jooq? (close connection)
这就是我实现我想要的每个 jooq 查询的方式。
UtilClass{
//one per table more or less
static void methodA(){
//my method
Connection con = MySQLConnection.getConexion(); //open
DSLContext create = DSL.using(con, SQLDialect.MYSQL); //open
/* my logic and jooq querys */ //The code !!!!!!!
try {
if ( con != null )
con.close(); //close
} catch (SQLException e) {
} //close
con=null; //close
create=null; //close
}
}
我在这里工作过度了吗? / 保持上下文和连接打开是否安全?
如果打开它是安全的,我宁愿每个 UtilClass
使用 1 个静态字段 DSLContext(并且只有注释部分会出现在我的方法中)。我会为每个 UtilClass 打开一个连接,因为我封装了每个 table(或多或少)的方法。
DSLContext
通常不是资源,所以你可以留下它"open",即你可以让垃圾收集器为你收集它。
但是,A JDBC Connection
是一种资源,与所有资源一样,您应该始终明确关闭它。在 Java 7+ 中关闭资源的正确方法是使用 try-with-resources 语句:
static void methodA() {
try (Connection con = MySQLConnection.getConexion()) {
DSLContext ctx = DSL.using(con, SQLDialect.MYSQL); //open
/* my logic and jooq queries */
// "ctx" goes out of scope here, and can be garbage-collected
} // "con" will be closed here by the try-with-resources statement
}
More information about the try-with-resources statement can be seen here. Please also notice that the jOOQ tutorial uses the try-with-resources statement when using standalone JDBC connections.
什么时候 DSLContext
是资源?
上述情况的一个例外是当您让 DSLContext
实例管理 Connection
本身时,例如通过如下方式传递连接 URL:
try (DSLContext ctx = DSL.using("jdbc:url:something", "username", "password")) {
}
在这种情况下,您将需要close()
DSLContext
如上所示
这就是我实现我想要的每个 jooq 查询的方式。
UtilClass{
//one per table more or less
static void methodA(){
//my method
Connection con = MySQLConnection.getConexion(); //open
DSLContext create = DSL.using(con, SQLDialect.MYSQL); //open
/* my logic and jooq querys */ //The code !!!!!!!
try {
if ( con != null )
con.close(); //close
} catch (SQLException e) {
} //close
con=null; //close
create=null; //close
}
}
我在这里工作过度了吗? / 保持上下文和连接打开是否安全?
如果打开它是安全的,我宁愿每个 UtilClass
使用 1 个静态字段 DSLContext(并且只有注释部分会出现在我的方法中)。我会为每个 UtilClass 打开一个连接,因为我封装了每个 table(或多或少)的方法。
DSLContext
通常不是资源,所以你可以留下它"open",即你可以让垃圾收集器为你收集它。
A JDBC Connection
是一种资源,与所有资源一样,您应该始终明确关闭它。在 Java 7+ 中关闭资源的正确方法是使用 try-with-resources 语句:
static void methodA() {
try (Connection con = MySQLConnection.getConexion()) {
DSLContext ctx = DSL.using(con, SQLDialect.MYSQL); //open
/* my logic and jooq queries */
// "ctx" goes out of scope here, and can be garbage-collected
} // "con" will be closed here by the try-with-resources statement
}
More information about the try-with-resources statement can be seen here. Please also notice that the jOOQ tutorial uses the try-with-resources statement when using standalone JDBC connections.
什么时候 DSLContext
是资源?
上述情况的一个例外是当您让 DSLContext
实例管理 Connection
本身时,例如通过如下方式传递连接 URL:
try (DSLContext ctx = DSL.using("jdbc:url:something", "username", "password")) {
}
在这种情况下,您将需要close()
DSLContext
如上所示