从一些Google搜索看来,.NET支持SQL Server 2005+的异步操作。最新的JDBC驱动程序是否支持这一点?我无法在任何地方找到它,所以我认为它可能不会。但我认为它不会受到伤害。SQL Server JDBC驱动程序是否支持异步操作?
谢谢! Avi
从一些Google搜索看来,.NET支持SQL Server 2005+的异步操作。最新的JDBC驱动程序是否支持这一点?我无法在任何地方找到它,所以我认为它可能不会。但我认为它不会受到伤害。SQL Server JDBC驱动程序是否支持异步操作?
谢谢! Avi
不,但这并不意味着您不能执行异步数据库操作。您只需将异步字符放在适当的层中,如消息驱动的bean或进程线程。我不明白为什么JDBC应该支持像异步处理这样的中间层概念。
JDBC几乎都是单线程的。从Connection下来,预计只有一个线程会在它的生命周期中使用它(OK连接可以被集中,但应该对应用程序是不可见的,并且一次只有一个线程应该使用Connection)。
有一个例外是Statement.cancel()
,它允许另一个线程中断/取消正在进行的查询,但我相信这是多线程的唯一实例。
像duffymo说,通常如果你想异步行为,你会建立在JDBC之上的东西(我猜这就是.NET在底下做的事情)。
commons-dbutils库提供了一个很好的JDBC调用封装,甚至提供了一个异步的调用方式:AsyncQueryRunner
。值得一看:http://commons.apache.org/dbutils/apidocs/org/apache/commons/dbutils/AsyncQueryRunner.html