जेपीए @Columnएनोटेशन
एनोटेशन की nullableविशेषता के @Columnदो उद्देश्य हैं:
- इसका उपयोग स्कीमा जनरेशन टूल द्वारा किया जाता है
- हिसरनेट द्वारा इसका इस्तेमाल पर्सिस्टेंस कॉन्सेप्ट को फ्लश करने के दौरान किया जाता है
स्कीमा जनरेशन टूल
HBM2DDL स्कीमा जेनरेशन टूल स्टेटमेंट @Column(nullable = false)विशेषता को स्टेटमेंट NOT NULLमें संबंधित तालिका स्तंभ के लिए बाधा उत्पन्न करता CREATE TABLEहै।
जैसा कि मैंने हाइबरनेट उपयोगकर्ता गाइड में समझाया है , डेटाबेस स्कीमा उत्पन्न करने के लिए HBM2DDL तंत्र पर निर्भर होने के बजाय फ्लाईवे जैसे टूल का उपयोग करना बेहतर है ।
दृढ़ता प्रसंग फ्लश
दृढ़ता प्रसंग को फ्लशिंग करते समय, हाइबरनेट ORM भी @Column(nullable = false)इकाई विशेषता का उपयोग करता है :
new Nullability( session ).checkNullability( values, persister, true );
यदि सत्यापन विफल हो जाता है, तो हाइबरनेट एक फेंक देगा PropertyValueException, और INSERT या UPDATE स्टेटमेंट को निष्पादित करने से रोकता है:
if ( !nullability[i] && value == null ) {
//check basic level one nullablilty
throw new PropertyValueException(
"not-null property references a null or transient value",
persister.getEntityName(),
persister.getPropertyNames()[i]
);
}
हाइबरनेट फ्लश तंत्र कैसे काम करता है, इस बारे में अधिक जानकारी के लिए इस लेख को देखें ।
द बीन वैलिडेशन @NotNullएनोटेशन
@NotNullएनोटेशन बीन मान्यता द्वारा परिभाषित और, है हाइबरनेट ORM जैसे सबसे लोकप्रिय जेपीए कार्यान्वयन, सबसे लोकप्रिय बीन मान्यता कार्यान्वयन है हाइबरनेट सत्यापनकर्ता ढांचा।
हाइबरनेट ORM के साथ हाइबरनेट वैलिडेटर का उपयोग करते समय, हाइबरनेट वैलिडेटर ConstraintViolationएंटिटी को मान्य करते समय फेंक देगा ।