Вопрос
Существует необходимость обновить одно поле до одного и того же значения в куче записей.Используя структуру 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 имеет смысл.