Я новичок в JPA / Hibernate и мне интересно, каков обычно лучший способ обновления сложной сущности?
Например, рассмотрим сущность ниже:
@Entity
public class Employee {
@Id
private long id;
@Column
private String name;
@ManyToMany
private List<Positions> positions;
// Getters and setters...
}
Как лучше всего обновлять ссылки на позиции? В настоящее время служба передает мне список должностей, которые должен иметь сотрудник. Создать их просто:
for (long positionId : positionIdList) {
Position position = entityManager.find(positionId);
employee.getPositions.add(position);
}
entityManager.persist(employee);
Однако, когда дело доходит до обновления сотрудника, я не уверен, каким будет лучший способ обновления должностей сотрудников. Я думаю, что есть два варианта:
Я анализирую список идентификаторов позиций и определяю, нужно ли добавлять / удалять позицию (это не кажется забавным процессом и может закончиться множеством запросов на удаление)
Я удаляю все позиции, а затем снова добавляю указанные позиции. Есть ли способ в JPA / Hibernate удалить все дочерние элементы (в данном случае позиции) с помощью одной команды sql?
Думаю ли я об этом неправильно? Что вы, ребята, рекомендуете?