public class UIDGenerator
extends org.hibernate.id.UUIDHexGenerator
继承Hibernate的UUIDGenerator, 将GUID长度缩短到15位. UUID主要用于同时使用多个数据库,不能依赖单个数据库自增生成主键的情形.
1. AppId - 使用2位的自定义值代替 原UUID中的IP(8位) + 同一IP上的JVM(8位),节约14位
2. 时间戳 - 沿用原算法.
3. Count - 相同JVM同一毫秒内的计数器,长度减为2.
全部使用Hex编码, 2位AppId + 12位时间戳 + 2位微秒内计数器.
| 构造器和说明 |
|---|
UIDGenerator() |
| 限定符和类型 | 方法和说明 |
|---|---|
protected java.lang.String |
formatShort(short value)
格式化最大值为255的数值成长度为2的字符串.
|
java.io.Serializable |
generate(org.hibernate.engine.spi.SharedSessionContractImplementor session,
java.lang.Object obj) |
java.io.Serializable |
generateUUID()
功能描述: 得到符合标准的UUID格式
|
protected short |
getAppId()
可重载子类实现从System Properties, Spring ApplicationContext等地方获得值.
|
public java.io.Serializable generate(org.hibernate.engine.spi.SharedSessionContractImplementor session,
java.lang.Object obj)
generate 在接口中 org.hibernate.id.IdentifierGeneratorgenerate 在类中 org.hibernate.id.UUIDHexGeneratorpublic java.io.Serializable generateUUID()
protected short getAppId()
protected java.lang.String formatShort(short value)
Copyright © 2018. All Rights Reserved.