- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个运行使用 JPA 的 EAR 的 JBoss 7.1.1。通过 JPA 注释,我使用映射到 org.hibernate.id.enhanced.TableGenerator
的策略 GenerationType.Table
。
有谁知道在使用“pooled-lo”优化器时如何配置 persistence.xml
?
最佳答案
现在,在我开始解释如何配置 pooled
或 pooled-lo
优化器之前,您应该知道 TABLE
生成器是这是一个糟糕的选择,因为它不仅慢了 10 倍,而且还可能会阻塞您的数据库连接池,因为它需要额外的连接来获取标识符。
更多,因为它使用行级锁来分配下一个标识符,这可能会导致您的应用程序出现瓶颈。有关 TABLE
危险的更多详细信息发电机。
从 Hibernate 5 开始,只要您将 JPA @SequenceGenerator
注释的 allocationSize
属性设置为一个值,就会使用 pooled
优化器大于 1
。
For Hibernate 4 or 3, to use the
pooled
orpooled-lo
optimizers, you have to enable the following Hibernate property:<property name="hibernate.id.new_generator_mappings" value="true"/>
值得注意的是,pooled
和 pooled-lo
优化器仅适用于 SEQUENCE 和 TABLE 生成器,因为这些优化器的目标是减少数据库往返次数需要获取下一个实体标识符。
pooled
优化器很容易设置。您需要做的就是设置 JPA @SequenceGenerator
注释的 allocationSize
,Hibernate 将切换到使用 pooled
优化器:
@Id
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "post_sequence"
)
@SequenceGenerator(
name = "post_sequence",
sequenceName = "post_sequence",
allocationSize = 3
)
private Long id;
由于此映射更直接,如果您还提供此 Hibernate 配置属性,则可以切换到 pooled-lo
而不是 pooled
:
<property name="hibernate.id.optimizer.pooled.preferred" value="pooled-lo" />
要使用 pooled-lo 优化器,实体标识符映射如下所示:
@Id
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "pooled-lo"
)
@GenericGenerator(
name = "pooled-lo",
strategy = "sequence",
parameters = {
@Parameter(
name = "sequence_name",
value = "post_sequence"
),
@Parameter(
name = "initial_value",
value = "1"
),
@Parameter(
name = "increment_size",
value = "3"
),
@Parameter(
name = "optimizer",
value = "pooled-lo"
)
}
)
要了解 pooled-lo 的工作原理,请查看此图:
If you have been using the legacy
hilo
optimizer, you might want to switch to usingpooled
orpooled-lo
, ashilo
is not interoperable with other clients that might not be aware of thehilo
identifier allocation strategy.
关于java - 如何在 Hibernate 中使用 pooled-lo 优化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204019/
我是一名优秀的程序员,十分优秀!