用Hibernate在Java中实现序列
我使用Java和Hibernate作为ORM工具。是否有任何方法可以使用Hibernate在Java中实现序列
目前我正在使用Oracle序列来实现这一点,但随着与数据库交互的增加,这是一种非常昂贵的方法
你可以在下面搜索框中键入要查询的问题!
我使用Java和Hibernate作为ORM工具。是否有任何方法可以使用Hibernate在Java中实现序列
目前我正在使用Oracle序列来实现这一点,但随着与数据库交互的增加,这是一种非常昂贵的方法
# 1 楼答案
这其实是一件很容易做到的事情:
IdentitfierGenerator
是必须实现的hibernate接口。上面的例子只是生成一个随机id为了使用它,必须将
generator
设置为mypackage.RandomIdentifierGenerator
显然,这个实现无法保证不会两次生成相同的id,这对于您正在编写的应用程序可能很重要,也可能不重要
# 2 楼答案
您确定使用Oracle序列成本高昂吗?正如其他评论者所提到的,这不太可能。话虽如此,您应该尝试使用增量大于1的序列。将这些序列与
hi-lo
或pooled
{a1}一起使用可能会很好地工作。这确保了如果N
是序列的增量大小,则HibernateSession
只会在N
插入中命中数据库一次。缺点是必须使用单独的create_time
列来标识行的插入顺序# 3 楼答案
我用它来生成主键:java。util。乌伊德。randomUUID()。toString()。替换全部(“-”,“)
它将生成如下32位主键:1b694a70285f49c8a25a5de598042e7b
使用这种方法几乎不可能获得重复的主键
将它与hibernate GeneratedValue一起使用会很好。 示例代码如下:
uuid set by to strategy是由Hibernate提供的,您可以使用自己的类的限定名来逐个使用自己的Java类策略