2012-03-09 2 views

ответ

7

От the documentation:

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

+1

Какое преимущество использования? – Chillax

+3

Нет никакого преимущества. Вы устанавливаете update = false, если вы не хотите обновлять столбец (например, если он обновлен триггером или другим столбцом). И вы устанавливаете insert в false, если вы не хотите, чтобы столбец был вставлен (например, если он инициализирован триггером или другим столбцом). В 99% случаев оставьте значение по умолчанию: true. –

+0

Как это сделать для набора (ребенка)? – PhantomReference

10

Используйте 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> 

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

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

+0

Как я могу сделать это для набора? – PhantomReference

Смежные вопросы