JPA では、属性optional=false
とアノテーションをいつ使用すればよいのかわかりません@Column(nullable=false)
。違いは何ですか?
ベストアンサー1
@Column(nullable=false)
スキーマを生成するための命令です。クラスから生成されたデータベース列は、実際のデータベースでは null 不可としてマークされます。
optional=false
は実行時命令です。これが行う主な機能は、遅延読み込みに関連しています。optional=false を設定することを忘れなければ、コレクションにマップされていないエンティティを遅延読み込みすることはできません (Hibernate は、null が不可能であると指示しない限り、そこにプロキシが必要か null が必要かがわからないため、プロキシを生成できます)。