有吗?显然不是。此处介绍 H2 自动混合模式 。
问问题
574 次
2 回答
1
复兴供进一步参考。
正如@fredt 所说,据我所知,没有官方的魔术参数可以实现混合模式。不过,您始终可以使用Server对象以编程方式启动服务器,以便其他进程能够连接到您的数据库。
我发现了一个技巧来完成非常接近混合模式的事情。为此,您需要将remote_open
属性设置为true
并使用这种形式的 URL 进行连接。
这里的想法是做这样的事情:
- 尝试使用上述 URL 类型连接到服务器。
- 如果无法连接,则表示服务器尚未启动,因此请继续以编程方式启动服务器。
- 当您再次连接时,会发生以下三件事之一。
- 如果不存在数据库文件,则会在指定的文件路径中创建一个,并且服务器将从 URL 别名开始提供它。
- 如果数据库文件存在并且没有被提供服务,服务器将从指定路径打开文件并开始提供服务。
- 如果数据库文件存在并且正在提供服务,则服务器将简单地返回一个连接。
我不确定当您计划生成大量短期进程时使用这种模式是否安全(特别是我没有深入研究 HSQLDB 代码来检查它如何处理数据库/创建/打开多个同时请求什么时候remote_open
设置)。尽管如此,我一直在使用这种模式在 Web 应用程序之间共享开发数据库一段时间,并且从未遇到过单个数据库损坏问题。
这里的主要限制是,当作为服务器的应用程序关闭时,打开的连接将停止工作并抛出异常......这对我的开发环境来说不是问题,这里这通常只意味着一个或两个中断的请求,直到另一个服务器启动,连接池检测并更新其连接。
于 2011-05-18T18:51:41.643 回答
0
没有 HSQLDB 不支持这种模式。
于 2011-02-22T20:22:41.540 回答