在 Spring 数据中分配返回的 savedEntity 的优点



我在大多数编码器中看到将数据(使用弹簧数据(保存为:

savedEntity = repo.save(savedEntity);
Long id = savedEntity.getId();

我很困惑为什么他们中的大多数人将返回的值赋回保存的实体,而以下代码也完全有效(我已经测试过自己(:

repo.save(savedEntity);
Long id = savedEntity.getId();

我是否错过了重新分配的一些好处?

例如

让实体为:

@Entity
public class SavedEntity {
@Id
private int id;
private String name;
//getter, setters, all arg-constructor, and no-arg constructor
}

考虑 SavedEntity 的对象是

SavedEntity entity = new SavedEntity(1,"abcd");

现在回答你的第一个问题,

SavedUser entity1 = repo.save(entity);
Long id = entity1.getId();

此 entity1 对象是从数据库获取的返回对象,这意味着上述实体已成功保存在数据库中。

对于第二个问题,

repo.save(entity);
Long id = entity.getId();//which you got it from SavedEntity entity = new SavedEntity(1,"abcd");

这里的 id 值是您提到的代替 id(原始值(的整数。

大多数情况下,id(主键(是自动生成的,同时使用 AUTO、Sequence 等策略将实体存储到数据库中。为了获取这些 id 或自动生成的主键值,我们重新分配保存的实体。

例如:

@Entity
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String firstName;
private String lastName;
}

在这种情况下,您不会在外部传递 id,但它会在将数据存储到 DB 时自动为其创建一个值。

最新更新