EJB 实体:更新单个列的最佳方式

EJB entities: Best way to update a single column

使用 EJB 实体,我需要更新 100 多列中单行的单列 table。我通常 read/load 该行并进行必要的更新,但这似乎势不可挡,因为所有剩余的列都将被不必要地更新,更不用说性能损失了。 有没有办法 just 更新单列类似于传统的 JDBC 方式?

您可以执行更新查询:

update Foo f set f.someField = :someValue where f.id = :id

请注意,如果实体已经加载,则此更改不会反映在实体中,并且会绕过乐观锁定。 确保不要过早优化。如果简单地修改实体就足够快了,那么就这样做吧。

我宁愿担心拥有超过 100 个字段的实体。也许你应该把它分成几个实体。

使用JPA,首先可以查询需要更新的记录实体,修改该实体的属性。然后调用 EntityManager 来更新这个实体。因此,您只需更新一条要更新的记录。