java - हाइबरनेट में गणना




1 Answers

हाइबरनेट या जेपीए एनोटेशन का उपयोग करना:

class User {
   @Enumerated(EnumType.STRING)
   UserType type
}

UserType सिर्फ एक मानक जावा 5 enum है।

मैं कल्पना नहीं कर सकता कि यह सिर्फ एनोटेशन तक सीमित है लेकिन मुझे वास्तव में यह नहीं पता कि एचबीएम फाइलों के साथ इसे कैसे किया जाए। यह बहुत संस्करण निर्भर हो सकता है, मैं अनुमान लगा रहा हूं लेकिन मुझे पूरा यकीन है कि 3.2+ हाइबरनेट आवश्यक है।

संपादित करें: यह एक एचबीएम में संभव है, लेकिन थोड़ा गन्दा है, इस मंच धागे पर एक नज़र डालें

अक्सर डीएओ में एक फ़ील्ड रखने के लिए उपयोगी होता है जिसका मूल्य जावा गणना से आता है। एक सामान्य उदाहरण एक लॉगिन डीएओ है जहां आपके पास आमतौर पर ऐसा क्षेत्र होता है जो उपयोगकर्ता को "सामान्य" या "एडमिन" के रूप में दर्शाता है। हाइबरनेट में, मैं इस संबंध का प्रतिनिधित्व करने के लिए निम्नलिखित 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);
}

यह काम करता है, लेकिन मुझे उपयोगकर्ता टाइप क्लास को बेकार लगता है और कुछ मूल्यों को स्टोर करने के लिए बहुत अधिक नौकरशाही की आवश्यकता होती है। आदर्श रूप में, हाइबरनेट को सीधे enum फ़ील्ड का समर्थन करना चाहिए और गणना मूल्यों को संग्रहीत करने के लिए एक अतिरिक्त तालिका तैयार करना चाहिए।

मेरा सवाल है: क्या हाइबरनेट में एक गणित वर्ग को सीधे मैप करने का कोई तरीका है? यदि नहीं, तो क्या समीकरणों का प्रतिनिधित्व करने के लिए मेरा पैटर्न पर्याप्त है या क्या मुझे कुछ याद आ रहा है? लोग किस अन्य पैटर्न का उपयोग करते हैं?




Related

java hibernate dao