据我了解,如果多个线程同时更新数据库表中的一行,则数据库将标记错误。
在我们的生产环境中,我们在一个集群中有 2 台 Tomcat 服务器。可能会发生两个用户同时被定向到每个 Tomcat 服务器并更新数据库表中的相同记录的情况。结果,将引发异常。
如何在本地机器上模拟这种情况?或者我将如何在与生产相同的环境中进行操作?
我正在研究的技术:Java 6、Spring 3、Hibernate、MS SQL Server 2008 和 Tomcat 7。
据我了解,如果多个线程同时更新数据库表中的一行,则数据库将标记错误。
在我们的生产环境中,我们在一个集群中有 2 台 Tomcat 服务器。可能会发生两个用户同时被定向到每个 Tomcat 服务器并更新数据库表中的相同记录的情况。结果,将引发异常。
如何在本地机器上模拟这种情况?或者我将如何在与生产相同的环境中进行操作?
我正在研究的技术:Java 6、Spring 3、Hibernate、MS SQL Server 2008 和 Tomcat 7。
您可以使用两个事务来模拟它。开始第一笔交易。开始第二个 tx。在第一个 TX 中进行一些更改并提交它。在第二个 TX 中进行一些更改并提交它。Hibernate 应该给你 OptimisticLockException。
你不想模拟场景。我读它是因为你想测试处理乐观锁异常的代码。我会简单地模拟抛出异常并显式抛出 OptimisticLockException 的类。在测试环境中使用异常处理程序内部的模拟类并编写测试fr异常处理程序。
我相信你并不担心测试乐观锁是否工作。因为这是 Hibernate 开发人员的工作。