2011-10-28 30 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是在尋求一種解決方案。 –

相關問題