में गणनाएं अक्सर डीएओ में एक फ़ील्ड रखने के लिए उपयोगी होती हैं जिसका मूल्य जावा गणना से आता है। एक सामान्य उदाहरण एक लॉगिन डीएओ है जहां आपके पास आमतौर पर ऐसा क्षेत्र होता है जो उपयोगकर्ता को "सामान्य" या "एडमिन" के रूप में दर्शाता है। हाइबरनेट में, मैं एक (अर्ध) typesafe तरीके से इस संबंध का प्रतिनिधित्व करने के लिए निम्न 2 वस्तुओं का प्रयोग करेंगे:हाइबरनेट
class User {
String username;
String passwd;
UserType type;
}
class UserType {
private enum Type {ADMIN, NORMAL};
private String type;
//Setters/Getters for Hibernate
public void setType(String type);
public String getType();
//Setters/Getters for user
public void setUserType(UserType.Type t);
public UserType.Type getUserType();
public static UserType fromType(UserType.Type t);
}
यह काम करता है, लेकिन मैं प्रयोक्ता प्रकार वर्ग ungly और सिर्फ एक जोड़े को स्टोर करने के लिए बहुत ज्यादा नौकरशाही की आवश्यकता होती है लगता है मूल्यों का आदर्श रूप में, हाइबरनेट को सीधे enum फ़ील्ड का समर्थन करना चाहिए और गणना मूल्यों को संग्रहीत करने के लिए एक अतिरिक्त तालिका तैयार करना चाहिए।
मेरा प्रश्न है: क्या हाइबरनेट में एक गणित वर्ग को सीधे मैप करने का कोई तरीका है? यदि नहीं, तो क्या समीकरणों का प्रतिनिधित्व करने के लिए मेरा पैटर्न पर्याप्त है या क्या मुझे कुछ याद आ रहा है? लोग किस अन्य पैटर्न का उपयोग करते हैं?
@Enumerated (EnumType.ORDINAL) जो अधिक कुशलता से मानचित्र के लिए मानचित्र कर सकते हैं? –
संभावित रूप से अधिक कुशल है, लेकिन मैं वास्तविक प्रणाली में अंतर को मापने में सक्षम नहीं होने पर पैसे डालूंगा। EnumType.ORDINAL वास्तव में डिफ़ॉल्ट है यदि आप अभी @Enumerated करते हैं। मुझे लगता है कि ज्यादातर लोग (एएसपी डीबीए) डीबी में enum नाम पसंद करते हैं। –
मैं इन enums के लिए कॉलम लंबाई कैसे बदल सकता हूँ? मैंने कॉलम एनोटेशन जोड़ने की कोशिश की लेकिन उसे सम्मानित नहीं किया गया? –