我正在为我的项目使用表生成器,下面是相同的代码片段。
@GeneratedValue(strategy = GenerationType.TABLE, generator = " TableGenerator")
@GenericGenerator(name = "TableGenerator", strategy = "org.hibernate.id.enhanced.TableGenerator", parameters = {
@Parameter(name = "table_name", value = "TABLE_GENERATOR")}
我知道hibernate会在给定实体的内存中缓存最小值和最大值,并更新TABLE_GENERATOR中的最小值和最大值。让我们假设值可能是50-100。
但我不确定JPA / Hibernate表生成器在集群环境中的行为是什么,即将有多个JVM,因此每个JMV中的最小值/最大值是什么,以及将在哪个值中更新表:TABLE_GENERATOR
答案 0 :(得分:1)
个人没有在集群环境中使用TableGenerator,相信它应该可以工作但是因为你遇到了单个表,所以总是存在并发或事务性问题的可能性。
IMO表生成的密钥仅在您不能使用大多数平台支持的序列号时才有意义,并且具有很多优点:
如果序列不是一个选项,这可能会有效,但我不相信没有漏洞可以解决。