对于某些Hibernate实体,我们需要存储其创建时间和上次更新时间。您将如何设计?您将在数据库中使用什么数据类型(假设使用MySQL,可能与JVM时区不同)?数据类型是否可以识别时区?你会在Java中使用什么数据类型(Date,Calendar,long,...)?您将由谁负责设置时间戳(数据库,ORM框架(休眠)或应用程序程序员)?您将使用哪些注释进行映射(例如@Temporal)?我不仅在寻找一个可行的解决方案,而且还在寻找一个安全且设计良好的解决方案。
3 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
如果使用的是JPA批注,则可以使用@PrePersist和@PreUpdate事件挂钩执行此操作:
@Entity
@Table(name = "entities")
public class Entity {
...
private Date created;
private Date updated;
@PrePersist
protected void onCreate() {
created = new Date();
}
@PreUpdate
protected void onUpdate() {
updated = new Date();
}
}
或者您可以@EntityListener在类上使用注释,并将事件代码放置在外部类中。
白衣非少年
TA贡献1155条经验 获得超0个赞
您可以使用@CreationTimestamp和@UpdateTimestamp:
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_date")
private Date createDate;
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "modify_date")
private Date modifyDate;
添加回答
举报
0/150
提交
取消