在我們使用較為方便的jpa時(shí),id生成策略可以使用默認(rèn)的,例如自增序列,
但隨著我們業(yè)務(wù)水平擴(kuò)展,分布式技術(shù)成熟的今天,單一的自增已經(jīng)不是一個(gè)較好的策略了,這里我們使用雪花算法代替
自定義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();
}
}
定義公共父類,省的以后每個(gè)子類都要重復(fù)寫這些公共參數(shù)
/**
* @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;
}
調(diào)用save方法,可以看到自定義策略成功
image.png
注:不了解雪花算法的可以翻閱我之前的文章