如何强制提交 Spring 您所在的位置:网站首页 web安全入门要多久 如何强制提交 Spring

如何强制提交 Spring

2023-03-14 19:40| 来源: 网络整理| 查看: 265

匿名用户

您的第一个问题是当多个线程执行相同的逻辑时,围绕数字生成的串行访问。如果您可以使用Oracle序列,这将在数据库级别自动处理,因为序列被保证在调用它们的任何次数都返回唯一值。然而,由于现在需要在服务器端进行管理,因此您需要在跨事务边界的数字生成逻辑(选择max并递增1)周围使用同步机制。您可以使Service方法同步(您的服务类将是单例和Spring管理的)并在它周围声明事务边界。但是请注意,这会对性能产生影响,并且通常不利于可扩展性。

另一个选项可能是这个的变体-将要分配的id存储在一个单独的表中,其中一列为“currentVal”,并使用悲观锁获取下一个数字。这样,主表就不会有任何大锁。这样,在主实体创建事务完成时,序列生成器代码将保持锁定。这些技术背后的主要思想是序列化对序列生成器的访问,并在主实体事务提交之前保持锁。同时尽可能延迟数字生成器。

如果在您的设计中使用触发器很好,@Vlad建议的解决方案是一个很好的解决方案。

关于flush行为的问题,SQL在flush调用时被发送到数据库,但是在以声明方式提交事务或调用手动提交之前,数据不会被提交。然而,事务可以看到它想要更改的数据,但不能看到其他事务,这取决于事务的隔离性质。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有