对于某个 Hibernate 实体,我们需要存储其创建时间和上次更新时间。你会如何设计这个?
您将在数据库中使用什么数据类型(假设 MySQL,可能与 JVM 处于不同的时区)?数据类型是否支持时区?
您会在 Java 中使用哪些数据类型(
日期
、日历
、长
,...)?您会让谁负责设置时间戳——数据库、ORM 框架(Hibernate)还是应用程序程序员?
您将使用什么注释来进行映射(例如
@Temporal
)?
我不仅在寻找可行的解决方案,而且在寻找安全且设计良好的解决方案。
最佳答案
如果您使用 JPA 注释,则可以使用 @PrePersist
和 @PreUpdate
事件 Hook 执行以下操作:
@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
注释并将事件代码放置在外部类中。
关于java - Hibernate 和 MySQL 的创建时间戳和上次更新时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54233212/