gpt4 book ai didi

java - 如何检查对象是否已保存到数据库

转载 作者:行者123 更新时间:2023-11-29 05:46:54 26 4
gpt4 key购买 nike

我正在使用 Spring JDBC,我想创建一个方法来检查它是否已经持久化到数据库中,这意味着它会得到一个自动递增的键。

我有一个名为 id 的字段,类型为 int。由于如果没有给出其他值,原始整数会自动分配为 0,因此我可以创建一个方法来检查 id == 0 但我必须确保我的主键序列从 1 开始。

我还可以在存储库中创建一个方法来检查对象是否已保存,但我不想为此进行查询。

我能想到的最后一个选项是将 id 的类型更改为 Integer 然后检查它是否为 null 但我不知道这是否是一个好方法。

有没有办法在域层中有一个方法来做到这一点?

最佳答案

id 的类型从 int 更改为 Integer 被认为是一个好主意:持久性框架,例如 Hibernate并且 JPA 鼓励它(请参阅 java.net 中的示例和 adam-bien.com 中的示例)。

使用对象类型可以让您仅通过检查 id == null 来快速区分非持久化对象和持久化对象。只是为了完整性:

  • id == null:未保存对象,执行INSERT
  • id != null:对象已保存,执行UPDATE

这样,您就不必将 0(或任何其他整数值)视为表示未初始化 的特殊情况;您已经有了 null,它很好地传达了特殊情况的想法。

添加业务 key

一个更好的方法,在 this article 中建议, 是在数据库管理的 ID 之外使用业务 key 。业务键是一个实体标识符,与自动生成的主键(代理键)不同,它对用户具有某种意义(自然键)。

然后您应该覆盖 equals 方法以使用业务键比较两个对象,而不是自动生成的主键。

关于java - 如何检查对象是否已保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15534634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com