繁体   English   中英

Apache Derby嵌入式模式和多线程连接管理

[英]Apache Derby Embedded Mode and Multi-Threaded Connection Management

我目前正在开发一个应用程序(该应用程序的逻辑和代码在这里我无法提供),该应用程序创建嵌入式derby数据库并使用多个线程与之交互以执行CRUD和SELECT操作。

假设嵌入式数据库的名称为bar ,而该数据库的路径为c:\\ foo \\ bar

多个线程打开它们自己与 c:\\ foo \\ bar 的连接 ,并对数据库中自己的表执行各自的操作。 与数据库的连接由装饰器抽象出来,该装饰器还维护最后一次访问该连接的时间。 如果最后一次访问该连接超过特定的阈值,则数据库连接将关闭并获得。 有一个以预定义的预定时间间隔运行并执行收割逻辑的收割线程。 作为收割逻辑的一部分,它使用以下关闭URL:

jdbc:derby:c:\foo\bar;shutdown=true

在运行收割器线程之后,任何尝试对此数据库执行查询的线程都会失败,并出现Derby错误8003 ,表明没有当前连接。

即使在每个线程都打开了自己的连接的情况下,在Derby嵌入式模式下也是这样吗? 当收割者线程运行时,它会关闭整个数据库,并且以前在所有线程上针对该数据库打开的任何连接现在都处于无效或关闭状态?

在此类应用程序中使用嵌入式德比的最佳实践是什么?

Derby JDBC连接URL上的shutdown=true属性不会关闭连接 ,它会关闭数据库

请参阅: http : //db.apache.org/derby/docs/10.13/ref/rrefattrib16471.html

如果只想关闭连接 ,请调用Connection.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM