这是允许多个用户同时访问数据库的好方法吗?

时间:2014-11-05 17:09:18

标签: java database locking h2

我已就此问过一些问题,但这有点不同。

现在,我已将程序设置为插入查询(无论是读取还是写入数据库),提交更改,并立即关闭连接。这允许数据库被锁定很短的时间。我使用H2作为我的数据库,我有" AUTO_SERVER = TRUE"设置,以便数据库可以在网络上运行并同时允许多个连接。

现在,这是我的两难选择。如果由于某种原因,用户尝试在锁定文件存在的确切时间访问数据库,我应该如何处理它?我是否应该显示一个JOptionPane,通知他们数据库当前被另一个用户锁定,并且他们应该确保所有其他连接都已关闭并重试?如果是这样,我将用什么Java代码来确定锁文件是否存在(或者,如果数据库确实被锁定了)?

像往常一样。提前感谢您提供任何有用的回复。

2 个答案:

答案 0 :(得分:1)

也许我错了,但是如果您的H2基地处于服务器模式,您就没有任何锁定并且可以同时连接多个用户(您必须为服务器模式配置数据源而不是嵌入模式)。

答案 1 :(得分:0)

H2守护程序线程正在创建锁,以避免让另一个守护程序线程进入并尝试在数据库文件当前正在使用时对其进行操作。如果您使用的是自动服务器模式,则H2守护程序线程将检查是否存在锁定,如果存在,则会尝试连接到锁定文件中指定的服务器。

如果两个用户尝试连接到同一个数据库,第一个将获得锁定并启动H2服务器,第二个将连接到第一个已启动的服务器。

查看auto mixed mode

上的文档