【发布时间】:2017-07-24 19:53:50
【问题描述】:
我搜索了多种方法和解决方案,以使 spring 休眠到安全线程。我是 spring 和 hibrenate 的小初学者,我无法独自做出这个决定。
我找到了这些选项:
使用 hibrenate locking 来“破坏”任何与其他事务发生冲突的事务,并从错误数据中保存数据库。这有一个缺点,因为将是未执行的交易,并且完成 thouses 请求的工作将更加复杂
只需在一个线程中运行所有事务(至少所有更新),该线程将成为“ExecuterThred”,他共享所有这些事务将按顺序执行。这样就没有transactoin冲突的机会,但是这个解决方案使您的数据库弹簧服务器依赖于一个线程,它可以通过useig regular java thread来实现,也许很大 like this,或使用thread local
使dao同步(或至少更新方法),也不会有transactoin冲突的机会,但可以跟踪服务器。
更多的东西,在我的服务器中,任何客户端都有用户,任何用户都有唯一的 id。我想到了更多一个选项:共享任何客户端都只能同时发送一个请求(在数据库上产生不同的请求)。 (我现在可以这样做,因为我可以使用唯一的 id),如果客户这样做,无论如何我会以并发错误响应,他可以再试一次。 这将是选项 4。
如果您有更多选择,请告诉我。
非常感谢,欢迎任何帮助或解释
【问题讨论】:
-
不知道为什么你需要担心这个。您应该首先在服务器上使用某种连接池。那已经有多个线程池了。
-
感谢您的回复。我需要做一些工作。我使用 mysql,有时我想做一些大的长查询和更多的查询,然后发生“冲突”,通常有一些 sql exeption。我的一些行动可能是两个不同的交易
-
请显示一些相关代码和错误。
标签: java spring multithreading hibernate server