Вопрос

Существует необходимость обновить одно поле до одного и того же значения в куче записей.Используя структуру DAO / ORM, я бы извлек каждый родительский объект, прошелся по каждому дочернему объекту, обновил его поле, а затем сохранил его.

Было бы быстрее просто написать SQL:поле набора таблиц обновления = значение, где заданы критерии.

Как мне соединить все это вместе?Должен ли я просто придерживаться структуры dao:

for (Table t : getTableDao().getTables()){  
  for(Child c : t.getChildren()){  
    c.setValue(1);  
    getChildrenDao().save(c);  
  }
}

Ваше здоровье.

Это было полезно?

Решение

В общем, массовые обновления не должны выполняться тем, что можно было бы считать "обычным ORM" способом, который, как вы описываете, зацикливается на каждом объекте.

В любом разумном ORM есть механизм для запуска обычной инструкции SQL update, как вы предлагаете, и это, как правило, правильный способ сделать это.

Просто потому, что вы используете ORM, не означает, что вы не можете воспользоваться преимуществами системы, основанной на реляционных наборах.Используйте объекты, когда объекты имеют смысл, и используйте SQL, когда SQL имеет смысл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top