2011-10-28 31 views
1

是否有任何可能性为allocationSize做一种“重构”,以便将其放入perssitence.xml中,而不必在每个实体内配置它?如何在persistence.xml中配置allocationSize而不是实体

这里我不想有什么:

@SequenceGenerator(name="AGENT_IDAGENT_GENERATOR", sequenceName="AGENT_SEQ", allocationSize=1) 

这里就是我期待有

<properties> 
     <property name="allocationSize" value="1"/> 
    </properties> 
</persistence-unit> 

感谢的提前

回答

1

您可以在persistence.xml中使用SessionCustomizer,遍历Session的登录序列对象并设置其预分配大小。

分配大小为1,不推荐,它会有不良的表现,你可能会更喜欢默认。

+0

同意有关allocationSize = 1。但是,也许OP不能有不连续的ID?如果服务器在分配了某些ID块后崩溃,那么ID是否会出现'漏洞'?顺便说一下SessionCustomizer是什么?这是一些Eclipselink特定功能? –

+1

是的,SessionCustomizer特定于EclipseLink,它提供对API和高级功能的访问 – James

+0

谢谢James :-) –

1

如果想要一个JPA解决方案,然后你不能把它放在persistence.xml,只是用orm.xml

+0

但是,如果每个实体都有一个单独的SequenceGenerator,'allocationSize = 1'必须出现在orm.xml中的每个SequenceGenerator元素中,对吧?对于所有的序列生成器,没有'为allocationSize'覆盖默认值50? –

+1

当然,每个都是单独指定的;根据JPA规范,该属性没有“persistence-unit-default”。 JPA实现本身通常提供全局默认值,DataNucleus肯定会;但我们总是鼓励坚持规范。 – DataNucleus

+0

好的,谢谢澄清@DataNucleus;我只是认为OP是在寻求一种解决方案。 –

相关问题