为了保证每个数据库/资源只有一个写事务,我正在创建一个阻止其他JVM启动会话的.lock文件。
但是,如果应用程序崩溃,我不确定如何在Eclipse中处理它。我想我必须手动删除文件?!那么,这是一个常见的解决方案还是存在其他解决方案?我认为重新启动的应用程序(在崩溃之后)无法与通常的应用程序区分开来,我认为这是让我困扰一两次Eclipse的一件事,它没有显示我必须删除锁的正确消息 - 重启Eclipse之前的文件。但我不确定这是不是问题。
好的,我可能有另一种写入事务的解决方案,它必须检查一个事务日志,该日志被删除以用于正确的提交事务。但是,在检查之后,写入事务被用于。还有其他解决方案吗?我想不出任何......
答案 0 :(得分:1)
数据库长期以来一直在处理事务和隔离。我不能为我的生活看到为什么你会发现需要重新发明这个轮子。你没听说过JTA吗?
看看Spring及其事务管理器。其他人已经更好地解决了这个问题。
更新:NoSQL意味着没有设计的ACID。如果您需要ACID,请不要使用NoSQL。你正在增加复杂性以弥补糟糕的设计决策。
Eclipse与此有什么关系?这是一个IDE。我认为您的用户不必启动IDE来运行您的应用程序。
答案 1 :(得分:0)
你应该试着躲过这个子弹。
但是如果您使用的dbms能够在过去使用事务,那么这是应用程序或用户锁定的一个技巧
您可以创建一个表,例如applicationLocks 然后启动事务并插入/更新特定记录,但不提交。 其他任何人都无法进入,因为行被锁定,你采取了一些合适的行动。
当应用程序关闭时,回滚。
如果应用程序崩溃,连接将关闭,事务仍会回滚。