In JPA, I am confused when to use the attribute optional=false and the annotation @Column(nullable=false). What is the difference?
Both is used to prevent a null value, but if you mind that null should be blocked in ...
The database layer (and you want to generate the schema using JPA) --> use @Column(nullable=false)
The runtime (and before contacting the database)--> use optional=false (much faster than the first checking).
If you want both abilities, use them both.