并行运行多个 JPA 事务

2024-01-06

我有两个(或更多)Java 线程使用 JPA 从 mysql 数据库创建、更新和删除实体。为了实现这一目标,我有一个 PersistenceLayer 类创建 EntityManager 并为我的所有实体提供保存、更新和删除方法,如下所示:

public void saveEntity(Entity entity) {
    manager.getTransaction().begin();
    manager.persist(entity);
    manager.getTransaction().commit();
}

public void saveEntity2(Entity2 entity) {
    manager.getTransaction().begin();
    manager.persist(entity);
    manager.getTransaction().commit();
}

如果一个线程同时进入 saveEntity 操作,另一个线程同时进入 saveEntity2 操作,则两个线程都会尝试从 EntityManager 获取事务,但会失败。然而,我一直认为底层数据库能够管理多个事务,特别是当两个事务都在不同的行甚至不同的表上工作时。当然,我可以同步这些块,但这意味着一次只能有一个数据库连接,这将无法扩展到创建多个线程的多个用户。

我在这里做了什么错误的假设?是否可以通过JPA向数据库提交多个事务并让DB处理并发问题?


EntityManager不适合由多线程使用。您需要获取单独的实例EntityManager对于每个线程。

实际上,如果您使用 EJB 或 Spring,您可以使用事务范围的EntityManager,它可以在多个线程中使用(它是一个代理,它将实际工作委托给单独的线程绑定实例EntityManager),但我认为这不是你的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并行运行多个 JPA 事务 的相关文章

  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • 关闭长度未知的通道

    当不了解频道时我无法关闭频道 length package main import fmt time func gen ch chan int var i int for time Sleep time Millisecond 10 ch
  • 总结二维数组

    鉴于我当前的程序 我希望它在用户输入所有值后计算每列和每行的总和 我当前的代码似乎只是将数组的值加倍 这不是我想要做的 例如 如果用户输入具有以下值 1 2 3 2 3 4 3 4 5 的 3x3 矩阵 则看起来就像我在下面的程序中对其进行
  • 确定代码是否在 App Engine 运行时 (Java) 上运行

    如何确定某些代码 Serv let 或简单的类 是否正在 Google App Engine 运行时 Java 上运行 以便决定是否使用 App Engine 的特定库 是否有一些可靠的运行时环境 ID 您可以检查com google ap
  • Spring 术语中命令、表单、业务和实体对象之间的区别?

    我试图理解这些对象在松散耦合系统方面的差异 业务对象与实体对象相同吗 我可以使用 MVC 中的业务或实体对象作为我的命令对象吗 命令对象与表单对象相同吗 只是寻找 Spring 术语和用法中对象类型的说明 我在 stackoverflow
  • 给定一个单词列表 - 在 java 中完成单词的好的算法是什么?权衡:速度/效率/内存占用

    我正在探索潜在的免费 付费应用程序的硬件 软件要求 最终目标是移动 Java 应用程序 该应用程序将从这个简单的目标开始 给定数据库中相关单词的列表 能够对单个字符串输入进行单词补全 换句话说 我已经知道数据库的内容 但算法的内存占用 速度
  • java.lang.UnsupportedOperationException:无法解析索引 13 处的属性:TypedValue{t=0x2/d=0x7f010046 a=-1}

    我在 android attrs xml 文件中添加了一个用于不同色调的属性 在 styles xml 文件中 我为这些属性指定了颜色 因此每种样式的它们都不同 Attrs xml
  • 当有“拥有”时,为什么你有“哪里”[重复]

    这个问题在这里已经有答案了 我知道这个问题已经被讨论了很多 但我的研究都无法让我相信 where and havingMySQL 中的 子句 据我了解 我们可以使用 where 子句实现所有可以完成的操作having 例如 select f
  • 使用 CrudRepository 进行自定义查询

    我想使用 CrudRepository 自定义查询 这是我的代码 Repository public interface CustomerRepository extends CrudRepository
  • perl 和 java 正则表达式功能之间有什么区别?

    perl 和 java 在支持哪些正则表达式术语方面有什么区别 这个问题仅涉及正则表达式 并且特别排除了how可以使用正则表达式 即使用正则表达式的可用函数 方法 以及语言之间的语法差异 例如java要求转义反斜杠等 特别令人感兴趣的是 j
  • 如何从 Qt 应用程序通过 ODBC 连接到 MySQL 数据库?

    我有一个新安装的 MySQL 服务器 它监听 localhost 3306 从 Qt 应用程序连接到它的正确方法是什么 原来我需要将MySQL添加到ODBC数据源 我在遵循这个视频教程后做到了这一点 https youtu be K3GZi
  • wsdl 没有服务元素

    我必须使用 WCF Web 服务并获得 WSDL 外部的 因此无法控制 WSDL 在 WSDL 定义中 我没有找到包含服务 端口和地址元素的服务元素 WSDL 中不存在这种情况正常吗 这对于 WCF WSDL 来说很常见吗 我正在尝试使用轴
  • java Runtime.getRunTime().exec 和通配符?

    我正在尝试使用删除垃圾文件 Process p Runtime getRuntime exec 只要我不使用通配符 它 就可以正常工作 即 Process p Runtime getRuntime exec bin rm f specifi
  • 设置 JAVA_HOME 变量时出现问题

    所以我刚刚下载了 Android Studio 并尝试设置 JAVA HOME 变量以便我可以运行它 我使用的是 Windows 8 并按照我找到的所有说明进行操作 但无济于事 转到高级系统设置 gt 环境变量 然后使用包含我的 jre7
  • 在 JPA 中保留 Java 8 LocalTime

    我的一个实体中有一个 Java 8 LocalTime private final LocalTime departureTime 它是一个带有 Spring Data Rest 的 Spring Boot 1 3 6 应用程序 我使用 J
  • Storm Spout 未收到 Ack

    我已经开始使用storm 所以我使用创建简单的拓扑本教程 https github com nathanmarz storm wiki Tutorial 当我运行我的拓扑时LocalCluster一切看起来都很好 我的问题是我没有得到元组的
  • Apache Kafka 是否提供异步订阅回调 API?

    我的项目正在将 Apache Kafka 视为老化的基于 JMS 的消息传递方法的潜在替代品 为了让这个过渡尽可能的顺利 如果替代的排队系统 Kafka 有一个异步订阅机制那就更理想了 类似于我们当前项目使用的JMS机制MessageLis
  • Python中的MariaDB连接器无法连接到远程服务器

    我使用与远程 Mariadb 服务器的连接已有几个月了 今天 无法再通过 macOS 上的 python mariadb 模块和 mariadb 连接器建立连接 基本安装如下 brew install mariadb connector c
  • 如何隐藏或删除 Android HoneyComb 中的状态栏?

    如何隐藏或删除 Android HoneyComb 中的状态栏 每次运行应用程序时 我都会发现某些内容必须被状态栏覆盖 我尝试改变AndroidManifest xml 但没有任何改变 你不知道 它被认为是永久的屏幕装饰 就像电容式主页 菜
  • 如何在 Servlet 中打开弹出窗口,然后重定向页面

    我想在调用 servlet 时打开一个弹出窗口 然后想将 servlet 重定向到某个 jsp page 这就是我所做的 protected void doGet HttpServletRequest request HttpServlet

随机推荐

  • Android 应用程序从 linkedin 访问令牌

    首先 是否可以使用 facebook twitter 等 Android 应用程序添加 linkedin 我读过很多博客 但无法在我的应用程序中实现 linkedin 我已达到应用程序的用户授权流程 用户输入其用户名和密码 但是当他输入 5
  • Firebase onCreate 触发器:无法获取除 UNAUTHENTICATED 之外的 authType

    使用具有以下规则的 Firebase 实时数据库 rules messages read auth null write auth null 并且 将此触发器定义为 exports localOnCreate functions datab
  • 扩展 Google 地图范围,使 div 叠加层不覆盖任何标记

    在我正在开发的 Google 地图混搭中 地图为 100 宽 高度几乎为 100 并且我有一个水平透明 div 它使用 z index 和 CSS 覆盖地图的左侧 当我动态添加标记时 我从一个空的 Bounds 对象开始 然后将其一一扩展以
  • 隐藏软键盘

    我需要能够隐藏软键盘以响应单击按钮 我看过很多关于这个主题的帖子 似乎解决方案是使用InputMethodManager 但我一直无法让它为我工作 据说以下将隐藏软键盘 InputMethodManager inputManager Inp
  • 如何设置 CSS、JS 和图像的过期时间?

    我最近使用 firebug 上的 pagespeed 插件分析了我的网站 它建议我设置 CSS JS 和图像文件的过期时间 我想知道 我该怎么做 当我运行 PageSpeed Addon 时 我用它来修复完全相同的问题
  • 使用 asyncio 实现非阻塞 I/O

    我正在尝试使用 Pygame 和 asyncio 编写一个网络游戏 但我不知道如何避免挂起读取 这是我为客户提供的代码 asyncio coroutine def handle client print Connected reader w
  • glmnet 的公式接口

    在过去的几个月里 我参与了许多项目 在这些项目中我使用了glmnet适合弹性网模型的封装 它很棒 但与大多数 R 建模函数相比 其界面相当简陋 特别是 您必须给出响应向量和预测矩阵 而不是指定公式和数据框 您还会失去常规界面提供的许多生活质
  • 快速解析非本地时区中的 Python 日期时间,并根据夏令时进行调整

    我需要快速将 ISO 8601 日期时间字符串 字符串中没有时区 但已知位于美国 太平洋时区 转换为 numpydatetime64 object 如果我的机器处于美国 太平洋时间 我可以简单地运行numpy datetime64 s 但是
  • SQL 和 MySQL 有什么区别? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我是数据库新手 我想知道 两者之间有
  • 有关 Google Play 应用程序资产加密的问题

    从 v4 1 开始果冻豆 http developer android com about versions jelly bean html 谷歌为Google Play推出了新的应用程序资产加密功能 升级应用程序时似乎出现了一些问题 其中
  • Spread Operator 不适用于基于 Redux/ES6 的示例

    我正在尝试理解 Dan Abramov 发布的 Redux 在线教程 目前我正在使用以下示例 带有数组的Reducer组合 https egghead io lessons javascript redux reducer composit
  • Windows 窗体图表设置固定混合标签

    我想将标签固定在 x 或 y 轴上 因此它们始终是静态的 我还想将标签与数字和字符串混合在一起 如图所示 另外y轴从 1开始 我怎么能总是从0开始呢 Setting CustomLabels https msdn microsoft com
  • 汇编中的内存分配和寻址

    我正在尝试学习汇编 但有一些指令我不完全理解其目的 C code include
  • 如何获取 PHP 函数中的函数名称?

    是否可以 function test echo function name is test 准确的方法是使用 FUNCTION 预定义魔法常数 http www php net manual en language constants pr
  • 父级的 jQuery 父级

    我目前正在尝试查找元素的父元素的父元素 我点击了一个链接 该链接位于 td 我想得到 tr object 为什么 this parent parent 不起作用 会怎样 Thanks Brendan Edit 看来我的语法错误导致了整个事情
  • 在 Altair 折线图末尾添加标签

    所以我一直在尝试获取它 以便在每行末尾都有一个标签 给出国家 地区名称 然后我可以删除图例 尝试过玩transform filter但没有运气 我使用了这里的数据https ourworldindata org coronavirus so
  • Java 客户端中的 TLS 与 SNI

    目前正在就该问题进行讨论NHIN Direct 安全与信任工作组 http nhindirect org message list Security and Trust Workgroup 关于传统 SSL 产生的 IP 到域映射问题 ht
  • 如何在 selenium python 中的相对 css 选择器中使用父选择器

    我将尽力解释这个问题 这个问题是关于Python中的selenium 考虑这个例子 for row in driver find elements By CSS SELECTOR div style overflow hidden gt d
  • 使用 C# 的形式制作动画 Gif

    在我的项目中 每当执行一个长流程时 都会显示一个小表单和一个小动画 gif 文件 我使用 this Show 打开表单 使用 this Close 关闭表单 以下是我使用的代码 public partial class PlzWaitMes
  • 并行运行多个 JPA 事务

    我有两个 或更多 Java 线程使用 JPA 从 mysql 数据库创建 更新和删除实体 为了实现这一目标 我有一个 PersistenceLayer 类创建 EntityManager 并为我的所有实体提供保存 更新和删除方法 如下所示