Настройка обновления и вставки свойства в Hibernate

В hibm файле спящего режима, какова цель установки следующих свойств?

update = "false"
insert = "false"

Какую цель они служат? Какая разница в производительности? Когда мы должны использовать их?

Ответ 1

Из документация:

update, insert (необязательно - по умолчанию - true): указывает, что сопоставленные столбцы должны быть включены в SQL UPDATE и/или INSERT заявления. Установка обоих значений в false позволяет получить чисто "производное" свойство значение которого инициализируется из некоторого другого свойства, которое отображается на то же столбец (столбцы) или триггер или другое приложение.

Ответ 2

Используйте update = "false" , insert = "false" , когда свойство вычисляется/выводится, или когда база данных или триггеры несут ответственность за вставку/или обновление значения.

Например, если БД автоматически генерирует значение INSERT, которое вы хотите использовать, тогда укажите insert = "false" , поэтому Hibernate не будет включать свойство в инструкции INSERT.

Другим примером может быть вычисленное/полученное свойство через формулу SQL: вы можете, например, получить сумму сумм заказов для каждого клиента. Например:

<property name="totalOrders" insert="false" update="false">
  <formula>(select sum(ORDER.TOTAL) from ORDER where ORDER.FK_CUSTOMER=ID)</formula>
</property>

В этом случае мы устанавливаем insert = "false" , update = "false" , так как это явно производный результат, и мы не можем его обновить напрямую.

Производительность? Это не о производительности - это о том, что требуется для отображения базы данных.