JPA使用自定义ID生成策略+雪花算法

2022-04-07  本文已影响0人  木木子丶

在我们使用较为方便的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方法,可以看到自定义策略成功

image.png

注:不了解雪花算法的可以翻阅我之前的文章

上一篇下一篇

猜你喜欢

热点阅读