【问题标题】:How do I configure allocationSize within persistence.xml instead of Entity如何在 persistence.xml 而不是 Entity 中配置 allocationSize
【发布时间】:2011-12-17 04:32:00
【问题描述】:

是否有可能对 allocationSize 进行一种“重构”,以便将其放在 perssitence.xml 中,而不必在每个实体中进行配置?

这是我不想拥有的:

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

这就是我所期望的

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

提前致谢

【问题讨论】:

    标签: oracle jpa eclipselink


    【解决方案1】:

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

    分配大小为1,不推荐,性能较差,最好使用默认值。

    【讨论】:

    • 同意allocationSize=1。但是,也许 OP 不能有非连续的 ID?如果服务器在分配一些 ID 块后崩溃,ID 中的“漏洞”会不会出现?顺便说一句,什么是 SessionCustomizer?这是一些 Eclipselink 特有的功能吗?
    • 是的,SessionCustomizer 是 EclipseLink 特有的,它可以访问 API 和高级功能
    【解决方案2】:

    如果想要一个JPA解决方案,那么你不能把它放在persistence.xml中,只需使用orm.xml

    【讨论】:

    • 但是话又说回来 - 如果每个实体都有一个单独的 SequenceGenerator,'allocationSize=1' 必须出现在 orm.xml 中的每个 SequenceGenerator 元素中,对吗?所有序列生成器都没有“覆盖分配大小的默认值 50”?
    • 当然,每个都是单独指定的;根据 JPA 规范,该属性没有“持久性单元默认值”。 JPA 实现本身通常提供全局默认值,DataNucleus 确实如此;但我们始终鼓励遵守规范。
    • 好的,感谢@DataNucleus 的澄清;我只是认为 OP 要求的是一劳永逸的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    相关资源
    最近更新 更多