En JPA, estoy confundido cuando uso el atributo optional=false
y la anotación @Column(nullable=false)
. ¿Cuál es la diferencia?Cuál es la diferencia entre @ManyToOne (opcional = falso) vs. @Column (nullable = false)
Respuesta
@Column(nullable=false)
es una instrucción para generar el esquema. La columna de la base de datos generada fuera de la clase se marcará como no anulable en la base de datos real.
optional=false
es una instrucción en tiempo de ejecución. Lo principal funcional que hace está relacionado con la carga lenta. No puede cargar una entidad asignada que no sea de colección a menos que recuerde establecer optional = false (porque Hibernate no sabe si debe haber un proxy allí o un valor nulo, a menos que indique que los nulos son imposibles, de modo que puede generar un proxy.)
Otro hecho interesante es que la mayoría de los proveedores de persistencia utilizan la información proporcionada por el parámetro "opcional" para optimizar la consulta en tiempo de ejecución. Por ejemplo, al cargar la entidad. Por lo tanto, todas las relaciones de la entidad real especificada con opcional = falso dan como resultado una UNIÓN INTERNA a su respectiva relación cuando se cargan, mientras que las relaciones especificadas con opcional = verdadero dan como resultado UNIONES IZQUIERDAS. – Lars
Ambos se usa para prevenir un valor nulo, pero si usted importa que nula debe ser bloqueado en ...
la base de datos capa (y que desea generar el esquema utilizando JPA) -> usar @Column(nullable=false)
el tiempo de ejecución (y antes de contactar con la base de datos) -> usar optional=false
(mucho más rápido que la primera comprobación).
Si desea ambas capacidades, úselas ambas.
- 1. @Basic (opcional = falso) vs @Column (nullable = falso) en JPA
- 2. @OneToOne (opcional = falso) y @JoinColumn (nullable = false) usados juntos
- 3. ¿Cuál es la diferencia entre falso y FALSO?
- 4. ¿Cuál es la diferencia entre() vs [] vs {}?
- 5. cuál es la diferencia entre rich: column y rich: columnas
- 6. Cuál es la diferencia entre e.preventDefault(); y devuelve falso?
- 7. EJB3 - @Column (insertable = "false") pregunta
- 8. Cuál es la diferencia entre colorWithSRGBRed vs colorWithDeviceRed vs colorWithCalibratedRed
- 9. ¿cuál es la diferencia de retorno verdadero o falso aquí?
- 10. HiddenInput (DisplayValue = false)] vs [ScaffoldColumn (false)]
- 11. javax.annotation: @Nullable vs @CheckForNull
- 12. Diferencia entre guardar (falso) y guardar (: validar => falso)
- 13. Char.IsDigit() vs Char.IsNumber(), ¿cuál es la diferencia?
- 14. ¿Cuál es la diferencia entre Cassandra vs Oracle Coherence?
- 15. Mysql: ¿Cuál es la diferencia entre "slow_query_log" vs "log_slow_queries"
- 16. ¿Cuál es la diferencia entre Solr vs Websolr?
- 17. ¿Cuál es la diferencia entre X = X ++; vs X ++ ;?
- 18. ¿Cuál es la diferencia entre ser db_owner vs. db_datareader/db_datawriter?
- 19. ¿Cuál es la diferencia entre Console.WriteLine() vs Debug.WriteLine()?
- 20. ¿Cuál es la diferencia entre html.AttributeEncode vs html.Encode?
- 21. ¿Cuál es la diferencia entre "origen maestro" vs "origen/maestro"
- 22. ¿Cuál es la diferencia entre Selenium's Remote Control vs WebDriver?
- 23. ¿Cuál es la diferencia entre gets.chomp() vs. STDIN.gets.chomp()?
- 24. ¿Cuál es la diferencia entre "git reset" vs "git rebase"?
- 25. ¿Cuál es la diferencia entre process.cwd() vs __dirname?
- 26. Cuál es la diferencia entre String (value) vs value.toString()
- 27. ¿cuál es la diferencia entre ResultSetExtractor vs Rowmapper?
- 28. JIT vs NGen: ¿cuál es la diferencia?
- 29. EQU vs DC.B. ¿Cuál es la diferencia?
- 30. Diferencia entre AutoPostBack = True y AutoPostBack = ¿Falso?
posible engaño - http://stackoverflow.com/questions/2899073/basicoptional-false-vs-columnnullable-false-in-jpa Creo que la discusión allí para @Basic (opcional = falso) se aplica también a @ManyToOne (opcional = falso) –