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

在我们使用较为方便的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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容