2011-07-19 10 views
6

कौन सा सबसे अच्छा अभ्यास है?@Temporal @ कॉलम कॉलम परिभाषा को प्राथमिकता दी गई है?

@Column(name = "FOO", columnDefinition = "TIMESTAMP") 
private Date foo; 

या

@Column(name = "FOO") 
@Temporal(TemporalType.TIMESTAMP) 
private Date foo; 

प्रलेखन पता चलता है कि columnDefinition का उपयोग कर गैर पोर्टेबल है ...

उत्तर

8

प्रलेखन पता चलता है कि columnDefinition का उपयोग कर गैर पोर्टेबल है ...

यह सच है। columnDefinition ने SQL डेटा प्रकार निर्दिष्ट किया है जिसका उपयोग किया जाएगा। हालांकि यह डेटा प्रकार सभी आरडीबीएमएस में उपलब्ध नहीं हो सकता है। जेपीए में, यह जेपीए प्रदाता का कर्तव्य है कि यह पता लगाने के लिए कि एसबी क्या डीबी पर काम करता है। आप उस कॉन्फ़िगरेशन का निर्दिष्ट भाग कर सकते हैं, लेकिन आप हमेशा कुछ डेटाबेस के लिए समर्थन तोड़ने का जोखिम उठाएंगे।

दूसरी ओर @Temporal एक अमूर्त कि जेपीए मानक का हिस्सा है। प्रत्येक जेपीए प्रदाता सभी समर्थित डेटाबेस के लिए विभिन्न प्रकार के @Temporal विभिन्न SQL प्रकारों को मैप करने में सक्षम होना चाहिए।

संबंधित मुद्दे