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



Answers

हाइबरनेट दस्तावेज़ से: http://www.hibernate.org/272.html

आप अपने प्रत्येक enums के लिए एक नया typedef बना सकते हैं और संपत्ति टैग में typedefs संदर्भित कर सकते हैं।

उदाहरण मानचित्रण - इनलाइन <type> टैग

  <property name='suit'>
    <type name="EnumUserType">
      <param name="enumClassName">com.company.project.Suit</param>
    </type>
  </property>

उदाहरण मानचित्रण - <typedef> का उपयोग कर

  <typedef name="suit" class='EnumUserType'>
      <param name="enumClassName">com.company.project.Suit</param>
  </typedef>

  <class ...>
    <property name='suit' type='suit'/>
  </class>
Question

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