@Id
属性一般具有自动生成数据库主键ID的能力。 我想有一个时间戳是Id(我可以确保不会有2个相同的时间戳)。为数据库自动生成时间戳为Id?
您是否将时间戳直接设置为变量的属性,或者在构造函数中初始化它,还是将它作为参数传递给构造函数?
@Entity
public class MyDomain implements Serializable {
@Id
private Timestamp timestamp = new Timestamp(new Date().getTime());
public MyDomain() {
this.timestamp = new Timestamp(new Date().getTime());
}
public MyDomain(Timestamp timestamp) {
this.timestamp = timestamp;
}
}
你会选择什么,为什么?
一方面,Java只使用毫秒作为时间戳;大多数数据库默认为纳秒(或仅秒) - 在app/db之间有不匹配是失去某种东西的好方法。如果您突然收到很多请求,则通过时间戳将数据库限制为id是限制数据库吞吐量的好方法。使用时间戳记录日期/时间信息。使用一个id(通常是整数)来唯一标识行。 –