In JPA, I am confused when to use the attribute optional=false and the annotation @column(nullable=false). What is the difference?
views:
214answers:
1
+5
A:
@Column(nullable=false)
is an instruction for generating the schema. The database column generated off the class will be marked not nullable in the actual database.
optional=false
is a runtime instruction. The primary functional thing it does is related to Lazy Loading. You can't lazy load a non-collection mapped entity unless you remember to set optional=false (because Hibernate doesn't know if there should be a proxy there or a null, unless you tell it nulls are impossible, so it can generate a proxy.)
Affe
2010-07-26 02:49:41