【发布时间】:2020-10-28 07:05:46
【问题描述】:
我想知道哪个最适合这个 这是我的实体:
@Entity
@Data
public class User {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String middleName;
private String lastName;
private Status status;
private String statusRemarks;
}
选项 1 在 UserRepository 中直接批量更新:
如果要更新的用户数达到数百万,这会影响我的数据库性能吗?
public interface UserRepository extends CrudRepository<User, Long> {
@Query("UPDATE u FROM User u set u.status=:status, u.statusRemarks=:statusRemarks where u.status in :statuses")
void bulkUpdateByStatuses(Status status,String statusRemarks,Status... statuses);
}
选项 2 将按状态获取用户并像这样一一更新:
我很确定这会由于内存使用而影响 MS 的性能
public void bulkUpdateUserByStatuses(final UserBulkUpdateDto userbulkUpdateDto){
List<User> toUpdateUsers = userRepository.findByStatuses(userbulkUpdateDto.getStatuses())
for(final User user: toUpdateUsers){
user.setStatus(userbulkUpdateDto.getNewStatus());
user.setStatusRemarks(userbulkUpdateDto.getStatusRemarks());
userRepository.save(user);
}
}
}
【问题讨论】:
标签: spring-boot hibernate jpa spring-data-jpa spring-repositories