2012-03-09 15 views

Respuesta

7

De the documentation:

update, insert (opcional - por defecto es true): Especifica que las columnas asignadas deben ser incluidas en la versión de SQL y/o insertar declaraciones. Establecer ambas en falso permite una propiedad "derivada" pura cuyo valor se inicializa desde alguna otra propiedad que se asigna a la misma (s) columna (s) , o mediante un desencadenador u otra aplicación.

+1

¿Cuál es la ventaja de usarlo? – Chillax

+3

No hay ventaja. Establece update = false si no desea que la columna se actualice (por ejemplo, si se actualiza mediante un desencadenador u otra columna). Y establece insert en false si no desea que se inserte la columna (por ejemplo, si se inicializa mediante un disparador u otra columna). En el 99% de los casos, déjelo en su valor predeterminado: verdadero. –

+0

¿Cómo hago esto para un conjunto (niño)? – PhantomReference

10

Use update = "false", insert = "false" cuando la propiedad es calculada/derivada, o cuando la base de datos o activadores son responsables de insertar/actualizar el valor.

Por ejemplo, si la base de datos generaría automáticamente un valor en INSERT que desea usar, especifique insert = "false" para que Hibernate no incluya la propiedad en las instrucciones INSERT.

Otro ejemplo, sería una propiedad calculada/derivada a través de la fórmula SQL: podría, por ejemplo, recuperar una suma de totales de pedido para cada cliente. Ej:

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

En este caso nos propusimos insertar = "falsa", update = "falso" ya que este es claramente un resultado derivado, y no puede actualizar directamente.

¿Desempeño? No se trata de rendimiento, se trata de lo que requiere su mapeo de base de datos.

+0

¿Cómo puedo hacer esto para un conjunto? – PhantomReference

Cuestiones relacionadas