使用时间戳创建,让DB管理它或应用程序更好吗?

Jas*_*ell 8 java mysql orm hibernate

我们正在开发您的沼泽标准Java应用程序,我们正在创建的许多记录(MySQL中的Hibernate实体)已经"创建"和"修改"了它们的时间戳.

现在,我和其中一个开发人员不同意 - 我相信这两个字段都应该有一个MySQL默认值为CURRENT_TIMESTAMP,然后修改后的应用程序可以更改.他希望两者都由应用程序管理.

两种决定都有令人信服的理由吗?我不明白为什么你要为代码添加更多显式步骤,除非由于某种原因你担心你的服务器(db,application)有不一致的时间戳.

Boz*_*zho 7

  • 如果可以牺牲可移植性,请使用DB时间戳.此外,如果非常小的差异对应用程序重要,并且您将拥有多个应用程序服务器/群集,则可能会遇到同步节点的问题.
  • 使用应用程序生成时间戳,以防不确定所选的数据库将保留,或者您使用多个数据库 - 例如MySQL用于生产,HSQLDB用于单元测试.

如果这些参数都不适用,请使用对您来说更容易的(或更多开发人员投票的那个)

如果你去申请处理,可以选择Pascal Thivent的建议@PreUpdate,或者让你的字段设置为默认值,例如:

private Calendar date = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)