Поведение Spring JPA saveAndFlush() с @DynamicUpdate / @DynamicInsert

#hibernate #jpa #spring-data

#переход в спящий режим #jpa #spring-данные

Вопрос:

У меня есть объект JPA, который в настоящее время не помечен ни @DynamicUpdate, ни @DynamicInsert . В этой таблице более 30 столбцов и пара блоков.

Допустим, у меня уже есть запись с ID = 123 в таблице, и мне нужно обновить несколько столбцов для одной и той же записи во время обработки запроса. Я обновляю соответствующие столбцы с помощью DTO, а затем вызываю метод saveAndFlush(), чтобы перенести изменения в БД.

Итак, у меня есть два запроса, связанные со следующей операцией

  • Для соответствующей операции, что я должен использовать @DynamicUpdate или @DynamicInsert
  • Будет ли какая-либо из аннотаций, например, @DynamicUpdate / @DynamicInsert, оказывать какое-либо влияние на производительность при выполнении SQL

Ответ №1:

Единственное влияние заключается в том, что могут создаваться разные операторы (в зависимости от комбинаций установленных атрибутов), что снижает вероятность попадания в кэш операторов.