我使用 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/