gpt4 book ai didi

java - 如何对所有映射使用相同的 IdentifierGenerator 实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:22 25 4
gpt4 key购买 nike

像这样使用IdentifierGenerator时

<id name="id" column="id" type="long">
<generator class="com.persistence.generator.CustomGenerator">
<param name="max_lo">5</param>
<param name="sequence">A_SEQ</param>
</generator>
</id>

如果在多个类映射中使用相同的 CustomGenerator 类,Hibernate 会为每个类映射实例化 CustomGenerator 类。

是否可以只生成单个实例?

最佳答案

好吧,我不确定您是否可以共享一个实例,但您当然可以编写一个轻量级代理生成器来为您完成它,就像这样(为了简洁起见,我在这里使用静态,但这很容易成为一个单例模式或类似):

import org.hibernate.id.IdentifierGenerator;

public class SharedGenerator implements IdentifierGenerator {
private static final IdentifierGenerator underlyingGenerator = new UUIDGenerator();

@Override
public Serializable generate(SessionImplementor sessionImplementor, Object o) throws HibernateException {
return underlyingGenerator.generate(sessionImplementor, o);
}
}

然后在 Hibernate 配置中使用 SharedGenerator,因为所有实例都将调用底层生成器的相同实例。

关于java - 如何对所有映射使用相同的 IdentifierGenerator 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31987825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com