java - 通过时间戳创建,让数据库管理它更好,还是让应用程序管理更好?

标签 java mysql hibernate orm

我们正在开发您的沼泽标准 Java 应用程序,并且我们正在创建的许多记录(MySQL 中的 Hibernate 实体)都有“创建”和“修改”时间戳。

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

这两个决定是否有令人信服的理由?我不明白你为什么要在代码中添加更明确的步骤,除非出于某种原因你担心你的服务器(数据库、应用程序)具有不一致的时间戳。

最佳答案

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

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

如果您选择应用程序处理,请使用 @PreUpdate 寻求 Pascal Thivent 的建议,或者将您的字段设置为默认值,例如:

private Calendar date = Calendar.getInstance();

关于java - 通过时间戳创建,让数据库管理它更好,还是让应用程序管理更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130896/

相关文章:

hibernate - 如何在 Grails 应用程序中监控 Hibernate 统计信息(缓存命中和未命中)?

java - 如何重定向到网络中心站点中的页面

java - 编写更短的 if else 代码

mysql - 选择获取mysql中的数据

mysql - 如何让mysql只用一行回答

java - Hibernate - 多次映射一个类

java - 通过 JDBC 从 Linux 计算机使用 Windows 身份验证连接到 SQL Server

java - Selenium 2 Webdriver(无法通过 xpath 找到元素)

php - 如何减小数据库大小?

java - chalice /hibernate : No row with the given identifier exists