首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >处理并发Java级与数据库/JPA级

处理并发Java级与数据库/JPA级
EN

Stack Overflow用户
提问于 2018-08-04 23:02:55
回答 2查看 1.6K关注 0票数 0

Scenario:在任何类型的在线预订应用程序中,人们都有可能同时访问应用程序。因此,在该永久应用程序中可能存在并发问题。

Problem

在这种情况下,如果一个或多个人同时访问应用程序,则存在并发问题。

为了解决并发问题,我们有两种解决方案

1)客户端级的Java并发性

2) JPA持久层的优化锁定或悲观锁定

如果数据库包含1000万条或更多记录,那么哪个是最佳解决方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-04 23:25:26

性能问题和并发问题完全是两个不同的问题域。最好不要把两者都混在一起。

关于并发问题:、、并发或多线程在在线预订系统中的使用可能非常有限。为了避免lost updates的问题,您必须使用JPA乐观锁定(最好是)或悲观锁定。这是因为,如果应用程序的多个实例并行(或多线程)运行,那么使用JVM级别的线程安全技术就不可能避免丢失更新。

您可以参考以下教程:

  1. JPA Optimistic Locking - Oracle Blog
  2. The Java EE 6 Tutorial
票数 1
EN

Stack Overflow用户

发布于 2018-08-05 03:30:12

这完全取决于应用程序。如果数据模型不复杂,也不庞大,那么JPA乐观锁定就是最佳解决方案。

Java和数据库的并发性各有优缺点。

数据库级别:

优势:

1)它更容易实现,也更容易维护。

劣势:

1)如果数据库包含庞大而复杂的数据,则可能会导致死锁和超时。

Java级别:

的优势:

1)更高的资源利用率

Disadvantages:

1)调试和测试非常复杂。

2)存在死锁发生的可能性。

3)在Java编程中难以实现。

4)一个糟糕的设计所涉及的风险因素。(饥饿)

5)它不能从一个环境移植到另一个环境

参考:java Concurrency vs JPA concurrency

参考:database vs user level

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51686824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档