我们正在开发您的沼泽标准 Java 应用程序,并且我们正在创建的许多记录(MySQL 中的 Hibernate 实体)都有“创建”和“修改”时间戳。
现在,我和其中一位开发人员不同意 - 我认为这两个字段都应该有一个 MySQL 默认值 CURRENT_TIMESTAMP,然后应用程序可以更改修改。他希望两者都由该应用管理。
这两个决定是否有令人信服的理由?我不明白你为什么要在代码中添加更明确的步骤,除非出于某种原因你担心你的服务器(数据库、应用程序)具有不一致的时间戳。
最佳答案
- 如果可以牺牲可移植性,请使用数据库时间戳。此外,如果非常小的差异对应用程序很重要,并且您将拥有多个应用程序服务器/集群,则同步节点时可能会出现问题。
- 使用应用程序生成时间戳,以防不确定所选数据库是否会保留,或者如果您使用多个数据库 - 例如 MySQL 用于生产,HSQLDB 用于单元测试。
如果这些参数都不适用,请使用对您来说更容易的一个(或更多开发人员投票支持的那个)
如果您选择应用程序处理,请使用 @PreUpdate
寻求 Pascal Thivent 的建议,或者将您的字段设置为默认值,例如:
private Calendar date = Calendar.getInstance();
关于java - 通过时间戳创建,让数据库管理它更好,还是让应用程序管理更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130896/