Java Hibernate allocationSize在自定义序列生成器中的使用
我们使用的SequenceGenerator使用的是PostgreSQL数据库的序列。我们知道默认情况下allocationSize()是50 问题是我们正在转向自定义序列生成器,它扩展了SequenceGenerator类并重写了函数generate()。但有些人认为这不起作用,这是因为每次都联系DB,在将当前序列乘以allocationSize()之后,服务器上没有保留缓冲区 这是客户序列生成器的当前代码:Java Hibernate allocationSize在自定义序列生成器中的使用,java,postgresql,hibernate,jpa,Java,Postgresql,Hibernate,Jpa,我们使用的SequenceGenerator使用的是PostgreSQL数据库的序列。我们知道默认情况下allocationSize()是50 问题是我们正在转向自定义序列生成器,它扩展了SequenceGenerator类并重写了函数generate()。但有些人认为这不起作用,这是因为每次都联系DB,在将当前序列乘以allocationSize()之后,服务器上没有保留缓冲区 这是客户序列生成器的当前代码: public class UseExistingOrGenerateIdGe
public class UseExistingOrGenerateIdGenerator extends SequenceGenerator {
@Override
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
Serializable id = session.getEntityPersister(null, object)
.getClassMetadata().getIdentifier(object, session);
return id != null ? id : (super.generate(session, object));
}
}
在其他一些类中定义了getter:
@Id
@Column(name = "PrimaryID", nullable = false, precision = 38, scale = 0)
@GenericGenerator(name = "primaryIdSeq",
strategy = "com.data.generator.sequence.UseExistingOrGenerateIdGenerator",
parameters = {
@Parameter(name = "sequence", value = "Primary_id_SEQUENCE")
})
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "primaryIdSeq")
public BigDecimal getReturnId() {
return this.returnId;
}