为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕婉清6462132 2019-10-23 14:22:14
对于某些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在类上使用注释,并将事件代码放置在外部类中。


查看完整回答
反对 回复 2019-10-23
?
白衣非少年

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;


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 626 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信