gpt4 book ai didi

java - 如何有效地更新数据库中的实体?

转载 作者:行者123 更新时间:2023-11-29 07:43:57 27 4
gpt4 key购买 nike

每当我的应用程序中的实体包含与数据库实体不同的数据时,我想更新数据库中的实体。

我的更新方法如下:

    @Transactional
public void updateEntity(String a, String b, boolean c, Date d) { //some more params
MyEntity entity = dao.findEntityBy(a, b, c); //might be some more params
//nullcheck

if (!entity.getA().equals(a)) {
entity.setA(a);
}
if (!entity.getB().equals(b)) {
entity.setB(b);
}
//repeat per property... a-n

dao.save(entity);
}

问题:我是否应该检查实体的每个属性是否已更改,然后只使用 setter?还是我应该跳过检查并覆盖实体?

MyEntity entity = dao.findEntityBy(a, b, c);
entity.setA(a);
entity.setB(b);
//...
dao.save(entity);

什么是首选方式?这两种解决方案的(缺点)优点是什么?

最佳答案

如果你有很多属性,你可以使用dynamic-update=true来优化性能。 dynamic-update 属性告诉 Hibernate 是否在 SQL UPDATE 语句中包含未修改的属性。

可以配置为

@Entity
@Table(name = "MY_ENTITY")
@org.hibernate.annotations.Entity(
dynamicUpdate = true
)
public class MyEntity {
}

关于java - 如何有效地更新数据库中的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27507061/

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