如何在JBoss中使用带有Hibernate的pooled-lo优化器

时间:2014-08-08 12:53:02

标签: java hibernate orm jboss optimization

我有一个运行使用JPA的EAR的JBoss 7.1.1。使用JPA注释,我使用映射到GenerationType.Table的策略org.hibernate.id.enhanced.TableGenerator

有没有人知道在使用“pooled-lo”优化器时如何配置persistence.xml

2 个答案:

答案 0 :(得分:2)

与此同时,我得到了一个问题的答案。

当您将以下行添加到persistent.xml文件中的<properties>部分时,hibernate将使用&#34; pooled-lo&#34;优化

<property name="hibernate.id.optimizer.pooled.prefer_lo" value="true" />

答案 1 :(得分:2)

包含pooled-lo optimizer,如果您使用的是Hibernate 3.x或4.x,则必须通过设置以下Hibernate属性来启用增强优化器:

properties.put("hibernate.id.new_generator_mappings", "true");

如果您正在使用Hibernate 5.x,则默认启用此设置。值得注意的是pooledpooled-lo优化器仅适用于SEQUENCE and TABLE generators

然后,您需要将pooled-lo标识符生成器添加到@Id属性中:

@Id
@GenericGenerator(name = "sequenceGenerator", 
    strategy = "enhanced-sequence",
    parameters = {
        @org.hibernate.annotations.Parameter(
            name = "optimizer", value = "pooled-lo"),
        @org.hibernate.annotations.Parameter(
            name = "initial_value", value = "1"),
        @org.hibernate.annotations.Parameter(
            name = "increment_size", value = "3")
    }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, 
    generator = "sequenceGenerator")
private Long id;

或者像这样:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pooled-lo")
@GenericGenerator(
        name = "pooled-lo",
        strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
        parameters = {
                @Parameter(name = "sequence_name", value = "sequence"),
                @Parameter(name = "initial_value", value = "1"),
                @Parameter(name = "increment_size", value = "3"),
                @Parameter(name = "optimizer", value = "pooled-lo")
        }
)
private Long id;