В hibernate HBM-файле, какова цель установки следующих свойств?Настройка обновления и вставки свойства в Hibernate
update = "false"
insert = "false"
Какую цель они служат? Какая разница в производительности? Когда мы должны их использовать?
В hibernate HBM-файле, какова цель установки следующих свойств?Настройка обновления и вставки свойства в Hibernate
update = "false"
insert = "false"
Какую цель они служат? Какая разница в производительности? Когда мы должны их использовать?
обновление, вставка (опция - по умолчанию в True): указывает, что отображенные столбцы должны быть включены в SQL UPDATE и/или INSERT заявления. Установка обоих значений в false позволяет получить чисто «производное» свойство , значение которого инициализируется из некоторого другого свойства, которое сопоставляется с тем же столбцом (столбцами) или с помощью триггера или другого приложения.
Используйте 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>
В этом случае мы устанавливаем вставить = «ложь», обновление = «ложь», так как это явно полученный результат, и мы не можем обновлять его непосредственно.
Производительность? Речь идет не о производительности - речь идет о том, что требуется для сопоставления базы данных.
Как я могу сделать это для набора? – PhantomReference
Какое преимущество использования? – Chillax
Нет никакого преимущества. Вы устанавливаете update = false, если вы не хотите обновлять столбец (например, если он обновлен триггером или другим столбцом). И вы устанавливаете insert в false, если вы не хотите, чтобы столбец был вставлен (например, если он инициализирован триггером или другим столбцом). В 99% случаев оставьте значение по умолчанию: true. –
Как это сделать для набора (ребенка)? – PhantomReference