[英]Hibernate @GeneratedValue V.S. custom assignment
// Auto generation
public abstract class BaseEntity implements Serializable {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "id", unique = true)
private UUID id;
}
// Custom assignment
public abstract class BaseEntity implements Serializable {
@Id
@Column(name = "id", unique = true)
private UUID id = UUID.randomUUID();
}
public User extends BaseEntity{
@OneToOne
private Address address;
//... Getter/Setter
}
public Address extends BaseEntity{}
My question is if I want to use UUID as primary key, do we need to use the generator to assign the UUID and what is the difference between two method ? 我的问题是,如果我想使用UUID作为主键, 是否需要使用生成器来分配UUID,这两种方法有什么区别 ?
For the Auto generation, the UUID only generated AFTER it saved into database. 对于自动生成,UUID仅在将其保存到数据库之后生成。 The following 下列
User user = new User();
User newUser = userRepository.save(user);
newUser.setAddress(new Address());
User newUserWithAddress = userRepository.save(user);
return newUserWithAddress;
For the custom assignment, the UUID can generated BEFORE it saved into database. 对于自定义分配,UUID可以在保存到数据库之前生成。 The code is cleaner. 代码更干净。 Is that any potential problems if I use custom assignment ? 如果我使用自定义分配,是否有任何潜在的问题 ?
User user = new User();
userRepository.save(user);
user.setAddress(new Address());
userRepository.save(user);
return user;
Assigning a random identifier in the constructor has disadvantages: 在构造函数中分配随机标识符具有以下缺点:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.