创建时间戳和最后更新时间戳与Hibernate和MySQL

问题:

对于某个Hibernate实体,我们需要存储其创建时间和上次更新时间。你会如何设计这个?

  • 您将在数据库中使用什么数据类型(假定MySQL,可能在不同的时区,JVM)?数据类型会在时区感知吗?
  • 您将在Java(DateCalendarlong,…)中使用哪些数据类型?
  • 谁负责设置时间戳 – 数据库,ORM框架(Hibernate)或应用程序编程器?
  • 您可以使用什么注释进行映射(例如@Temporal)?

我不仅寻找一个工作的解决方案,而且是为了安全和精心设计的解决方案。

回答:

如果您使用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注释,并将事件代码放在外部类中。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Creation timestamp and last update timestamp with Hibernate and MySQL

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

70 + = 77