Java Hibernate allocationSize在自定义序列生成器中的使用

Java Hibernate allocationSize在自定义序列生成器中的使用,java,postgresql,hibernate,jpa,Java,Postgresql,Hibernate,Jpa,我们使用的SequenceGenerator使用的是PostgreSQL数据库的序列。我们知道默认情况下allocationSize()是50 问题是我们正在转向自定义序列生成器,它扩展了SequenceGenerator类并重写了函数generate()。但有些人认为这不起作用,这是因为每次都联系DB,在将当前序列乘以allocationSize()之后,服务器上没有保留缓冲区 这是客户序列生成器的当前代码: public class UseExistingOrGenerateIdGe

我们使用的SequenceGenerator使用的是PostgreSQL数据库的序列。我们知道默认情况下allocationSize()是50

问题是我们正在转向自定义序列生成器,它扩展了SequenceGenerator类并重写了函数generate()。但有些人认为这不起作用,这是因为每次都联系DB,在将当前序列乘以allocationSize()之后,服务器上没有保留缓冲区

这是客户序列生成器的当前代码:

    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;
    }