get próximo valor da sequência do banco de dados usando hibernate

Tenho uma entidade que possui um campo NON-ID que deve ser definido a partir de uma sequência. Atualmente, busco o primeiro valor da sequência, armazeno-o no lado do cliente e calculo a partir desse valo

No entanto, estou procurando uma maneira "melhor" de fazer isso. Eu implementei uma maneira de buscar o próximo valor de sequência:

public Long getNextKey()
{
    Query query = session.createSQLQuery( "select nextval('mySequence')" );
    Long key = ((BigInteger) query.uniqueResult()).longValue();
    return key;
}

Entretanto, dessa maneira, reduz-se significativamente o desempenho (a criação de ~ 5.000 objetos fica mais lenta por um fator de 3 - de 5740ms para 13648ms

Tentei adicionar uma entidade "falsa":

@Entity
@SequenceGenerator(name = "sequence", sequenceName = "mySequence")
public class SequenceFetcher
{
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequence")
    private long                      id;

    public long getId() {
        return id;
    }
}

De qualquer forma essa abordagem também não funcionou (todos os IDs retornados foram 0

Pode alguém me aconselhar como buscar o próximo valor de sequência usando o Hibernate com eficiênci

Editar Após investigação, descobri que ligar paraQuery query = session.createSQLQuery( "select nextval('mySequence')" ); é de longe mais ineficiente do que usar o@GeneratedValue - por causa do Hibernatede alguma form consegue reduzir o número de buscas ao acessar a sequência descrita por@GeneratedValue.

or exemplo, quando crio 70.000 entidades (portanto, com 70.000 chaves primárias buscadas na mesma sequência), recebo tudo o que precis

CONTUD, O Hibernate apenas emite 1404 select nextval ('local_key_sequence') comandos. NOTA: No lado do banco de dados, o cache está definido como 1.

Se eu tentar buscar todos os dados manualmente, levarei 70.000 seleções, portanto, uma enorme diferença no desempenho. Alguém conhece o funcionamento interno do Hibernate e como reproduzi-lo manualment

questionAnswers(9)

yourAnswerToTheQuestion