方案:在任何类型的在线预订应用程序中,人们都有可能同时访问该应用程序。 因此,该特定应用程序可能存在并发问题。
问题:
在这种情况下,如果一个或多个人一次访问该应用程序,则存在并发问题。
要解决并发问题,我们有两种解决方案
1)客户端级别的Java并发
2)持久性级别的JPA乐观或悲观锁定
如果数据库包含1000万或更多的记录,那么哪一个是最佳解决方案?
答案 0 :(得分:1)
性能问题和并发问题是总共两个不同的问题领域。最好不要将两者混在一起。
关于并发问题: Java并发或多线程在在线预订系统中的用途可能非常有限。为避免出现lost updates问题,必须使用JPA乐观锁定(最好)或悲观锁定。那是因为如果您的应用程序的多个实例并行(或多个线程)运行,那么使用JVM级线程安全技术就无法避免丢失更新。
您可以参考以下教程:
答案 1 :(得分:0)
这完全取决于应用程序。如果数据模型不复杂也不庞大,那么JPA Optimistic Locking是一种最佳解决方案。
Java和数据库并发都有各自的优缺点。
数据库级别:
优势:
1)它更易于实现和维护。
缺点:
1)如果数据库包含庞大而复杂的数据,则可能导致死锁和超时。
Java级别:
优势:
1)更好地利用资源
缺点:
1)调试和测试非常复杂。
2)可能发生死锁。
3)难以在Java编程中实现。
4)与不良设计有关的风险因素。(饥饿)
5)它不能从一种环境移植到另一种环境