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

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

  • 您将在数据库中使用什么数据类型(假设使用MySQL,可能与JVM时区不同)?数据类型是否可以识别时区?

  • 你会在Java中使用什么数据类型(DateCalendarlong,...)?

  • 您将由谁负责设置时间戳(数据库,ORM框架(休眠)或应用程序程序员)?

  • 您将使用哪些注释进行映射(例如@Temporal)?

我不仅在寻找一个可行的解决方案,而且还在寻找一个安全且设计良好的解决方案。


慕婉清6462132
浏览 633回答 3
3回答

茅侃侃

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

白衣非少年

您可以使用@CreationTimestamp和@UpdateTimestamp:@CreationTimestamp@Temporal(TemporalType.TIMESTAMP)@Column(name = "create_date")private Date createDate;@UpdateTimestamp@Temporal(TemporalType.TIMESTAMP)@Column(name = "modify_date")private Date modifyDate;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java