在我们使用较为方便的jpa时,id生成策略可以使用默认的,例如自增序列,
但随着我们业务水平扩展,分布式技术成熟的今天,单一的自增已经不是一个较好的策略了,这里我们使用雪花算法代替
自定义id生成策略
/**
* @PROJECT_NAME: 五月科技
* @DESCRIPTION: 自定义主键生成策略
* @author: 徐子木
* @DATE: 2022/4/7 11:01 上午
*/
public class SnowIdGenerator implements IdentifierGenerator {
@Override
public Serializable generate(SharedSessionContractImplementor sharedSessionContractImplementor, Object o) throws HibernateException {
return SnowFlakeUtil.snowflakeIdString();
}
}
定义公共父类,省的以后每个子类都要重复写这些公共参数
/**
* @PROJECT_NAME: 五月科技
* @DESCRIPTION:
* @author: 徐子木
* @DATE: 2022/4/7 11:03 上午
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder(toBuilder = true)
@MappedSuperclass
public abstract class BaseEntity {
@Id
@GenericGenerator(name = "id",strategy = "com.cloud.zimu.config.SnowIdGenerator")
@GeneratedValue(generator = "id")
private String id;
@CreationTimestamp
private Timestamp createTime;
@UpdateTimestamp
private Timestamp updateTime;
}
调用save方法,可以看到自定义策略成功
注:不了解雪花算法的可以翻阅我之前的文章