我们怎样才能确定调用Connection.close()

时间:2014-06-29 08:09:32

标签: java mysql spring

我正在使用JDBC(非Hibernate)处理Spring MVC + Mysql。在项目中,我们有许多服务可以完成CRUD。对于每种方法,我们必须执行一些步骤,如

  • 打开Connection
  • 错误时回滚
  • 最后关闭connection

许多开发人员正在研究同一个项目,并且很难检查连接是否最终被每个人关闭。

他们以任何方式完成方法连接后都会关闭。我可以写任何类来检查当前方法的执行是否完成然后关闭连接。

更新

或者我们可以开发一些类,每个开发人员必须要求Connection将对连接对象进行操作,最后每个人都必须将该对象传递给驱逐舰。如果没有在该方法上调用destroyer show show time error。

类似的东西:

someMethod()
{
  Connection connection=null
  try
  {
Connection connection =icrudOperation.getConnection();

//do work with connection object like preparedStatement etc.
  }
  catch (Exception e)
  {
   //logging
  }
  finally
  {
   icrudOperation.destroy(connection); // if this is not written by any one then at compile time error will shown for this method.
  }
}

2 个答案:

答案 0 :(得分:2)

首先,你不应该搞乱连接。使用JdbcTemplate进行查询。如果您真的想要使用连接进行操作,请使用ConnectionCallback。使用弹簧声明式事务管理完成此操作,您只需解决1个问题。

如果您真的想使用Connection并拒绝使用JdbcTemplate的常用方法,您可以使用Springs声明式事务管理来解决此问题。将数据源包装在TransactionAwareDataSourceProxy中。然后配置Spring来管理事务,这将确保在事务期间将使用单个连接,spring将在事务结束时关闭连接。

然而,我强烈建议转而使用JdbcTemplate因为这将使您的生活变得更加轻松,并且可以帮助您解决实际的业务问题

另一件事是您的服务层不应该参与应该位于服务层使用的数据访问层中的JDBC编码。

答案 1 :(得分:-2)

以下内容应该有效:

try{
  Connecition.close();
}
finally{
  System.err.println();
  Connection.close();
}