java - 使用 Hibernate 在 Java 中实现序列

标签 java hibernate sequence

我使用 Java 和 Hibernate 作为 ORM 工具。有什么方法可以使用 Hibernate 在 Java 中实现序列吗?

目前我正在使用 Oracle 序列来实现此目的,但随着与数据库交互的增加,这是一种非常昂贵的方法。

最佳答案

这实际上是一件非常容易做的事情:

package mypackage;
import org.hibernate.id.IdentifierGenerator;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.HibernateException;

import java.io.Serializable;
import java.security.SecureRandom;
import java.util.UUID;

public class RandomIdentifierGenerator implements IdentifierGenerator {

  private final static SecureRandom sr = new SecureRandom();

  public Serializable generate(SessionImplementor sessionImplementor, Object o) throws HibernateException {
    long val = sr.nextLong();
    return Long.toString(Math.abs(val), Character.MAX_RADIX);
  }
}

IdentitfierGenerator 是您必须实现的 hibernate 接口(interface)。上面的例子只是生成一个随机id。

为了使用它,您必须将生成器设置为mypackage.RandomIdentifierGenerator

显然,此实现缺乏任何不会生成相同 id 两次的保证,这对于您正在编写的应用程序可能重要也可能不重要。

关于java - 使用 Hibernate 在 Java 中实现序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4024768/

相关文章:

java - 在方法中添加一个int并在main中显示

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'playerDAOImpl' : Injection of autowired dependencies failed

Java时间在Mysql表中插入

f# - 可从 F# 中的序列观察

java - Maven 和 Netbeans : how do I build project and get executable jar?

java - CursorAdapter 奇怪的行为

java.lang.ArrayIndexOutOfBoundsException : size=2048 offset=0 byteCount=-1

java - 在 JPA 持久性单元中定义一个名为的重复生成器是否可以?

r - 有很多类别的 ifelse 语句

python - 如何在 python 中搜索具有公差的模式