使用像
这样的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类。
是否可以仅生成单个实例?
答案 0 :(得分:2)
好吧,我不确定你可以共享一个实例,但是你当然可以编写一个轻量级的代理生成器来为你做这样的事情(我这里使用的是静态的简洁,但这可能很容易成为一个单例模式或类似的):
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,因为所有实例都将调用基础生成器的相同实例。