2012-09-17 58 views
12

Consideremos dos clases de ejemplo de dominio de Grails.¿Hay alguna diferencia entre la declaración 'transitorios estáticos' y 'tipo transitorio' para GORM?

primera clase:

class Person { 

    String name 
    Integer counter = 0 

    static transients = ['counter'] 
} 

segunda clase:

class Vehicle { 

    String name 
    transient Integer counter = 0 
} 

Habrá alguna diferencia en el comportamiento de persistencia o el dominio de clase GORM para el campo Entero contador entre las clases Persona y Vehículo?

EDIT: Sé que Persona clase es la buena manera de hacerlo, como se hace referencia en los documentos de Grails. Sin embargo, preferiría el modo de clase Vehículo, ya que parece ser más obvio y más fácil de no pasar por alto al leer un código.

Respuesta

15

Los dos mecanismos definen diferentes tipos de "fugacidad". static transients define las propiedades de bean que Hibernate no debe asignar a la base de datos, mientras que la palabra clave transient denota un campo que no debe ser guardado por el mecanismo de serialización de objetos Java (por ejemplo, al usar webflow). Ambos tienen sus usos en diferentes situaciones.

+0

Sí, esto es cierto. Estaba al tanto de eso, pero cuando una propiedad se coloca en la lista de transitorios estáticos, tampoco se serializa (por ejemplo, cuando se utiliza la conversión 'como XML'). Entonces, fue un comportamiento similar a la palabra clave transitoria. También he comprobado ahora que el contador de enteros transitorios se exporta al esquema DB de todos modos, así que de hecho esos dos no tienen nada en común. De todos modos, su respuesta es suficiente, ¡gracias! – topr

Cuestiones relacionadas