【问题标题】:Does the SQL Server JDBC driver support asynchronous operations?SQL Server JDBC 驱动程序是否支持异步操作?
【发布时间】:2010-08-23 17:33:25
【问题描述】:

通过一些谷歌搜索,.NET 似乎支持 SQL Server 2005+ 的异步操作。最新的 JDBC 驱动程序是否支持这个?我在任何地方都找不到提及它,所以我认为它可能没有。但我想问也无妨。

谢谢! 视频

【问题讨论】:

    标签: java sql-server jdbc asynchronous


    【解决方案1】:

    不,但这并不意味着您不能进行异步数据库操作。您只需将异步字符放在适当的层中,例如消息驱动的 bean 或进程线程。我不明白为什么 JDBC 必须支持像异步处理这样的中间层概念。

    【讨论】:

      【解决方案2】:

      JDBC 几乎都是单线程的。从 Connection 开始,预计只有一个线程会在其生命周期内使用它(好的 Connections 可以被池化,但这对应用程序来说应该是不可见的,并且一次只能有一个线程使用 Connection)。

      有一个例外是Statement.cancel(),它允许另一个线程中断/取消正在进行的查询,但我相信这是多线程的唯一实例。

      就像 duffymo 通常所说的,如果你想要异步行为,你会在 JDBC 之上构建一些东西(我猜这就是 .NET 在幕后所做的)。

      【讨论】:

        【解决方案3】:

        commons-dbutils 库为 JDBC 调用提供了一个很好的包装,甚至提供了一种异步调用方式:AsyncQueryRunner。值得一看:http://commons.apache.org/dbutils/apidocs/org/apache/commons/dbutils/AsyncQueryRunner.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-18
          • 1970-01-01
          • 1970-01-01
          • 2012-07-05
          • 1970-01-01
          • 1970-01-01
          • 2013-06-23
          • 1970-01-01
          相关资源
          最近更新 更多