并发读取-使用jpa hibernate中的不同java应用程序实例从同一个表中读取不同的行
我正在SpringBoot中编写一个调度程序,它将执行以下操作。并发读取-使用jpa hibernate中的不同java应用程序实例从同一个表中读取不同的行,java,sql,hibernate,jpa,Java,Sql,Hibernate,Jpa,我正在SpringBoot中编写一个调度程序,它将执行以下操作。 从表中读取2行(数据库-oracle) 做些手术 然后更新步骤1中读取的行的一个字段值。 当我将应用程序作为两个单独的实例运行时,将运行两个调度程序。这将使上述所有步骤重复两次 我的目标是,如果第一个实例的计划在该时间读取两行,那么第二个实例的计划将读取下两行,而不是同一行 请建议使用JPA或Java执行此操作的任何方法 让我们看看您的需求: 每个流程实例应该从某个表中读取两行 由一个进程处理的两行集合对于任何其他进程都是禁止的
当我将应用程序作为两个单独的实例运行时,将运行两个调度程序。这将使上述所有步骤重复两次 我的目标是,如果第一个实例的计划在该时间读取两行,那么第二个实例的计划将读取下两行,而不是同一行 请建议使用JPA或Java执行此操作的任何方法 让我们看看您的需求:
- 在表中添加一个锁列,作为“我当前正在工作”的标记
- 修改选择查询以忽略已锁定的列和
- 修改更新的选择查询
,防止其他进程执行相同操作。(是的,这是在阻止其他人,但只有在你这样做的时候)
- 现在更新两行以设置锁定标记或进程
- 做你必须做的事
- 准备好执行步骤3(更新字段)后,重置锁定标记李>