2012-09-17 15 views
12

आइए दो ग्राइल्स डोमेन उदाहरण कक्षाओं पर विचार करें।क्या GORM के लिए 'स्थैतिक ट्रांजिस्टर' और 'क्षणिक प्रकार एफ़िल्ड' घोषणा के बीच कोई अंतर है?

1 वर्ग:

class Person { 

    String name 
    Integer counter = 0 

    static transients = ['counter'] 
} 

2 वर्ग:

class Vehicle { 

    String name 
    transient Integer counter = 0 
} 

वहाँ वर्गों के बीच पूर्णांक काउंटर क्षेत्र के लिए GORM हठ या डोमेन वर्ग व्यवहार में कोई अंतर हो जाएगा व्यक्ति और वाहन?

संपादित करें: मुझे पता है कि व्यक्ति कक्षा Grails दस्तावेज़ों के संदर्भ में ऐसा करने का एक अच्छा तरीका है। हालांकि मैं वाहन कक्षा के तरीके को पसंद करूंगा क्योंकि यह कोड पढ़ने के दौरान अनदेखा नहीं करना अधिक स्पष्ट और आसान लगता है।

उत्तर

15

दो तंत्र विभिन्न प्रकार के "संक्रमण" को परिभाषित करते हैं। static transients बीन गुणों को परिभाषित करता है जिन्हें हाइबरनेट द्वारा डेटाबेस में मैप नहीं किया जाना चाहिए, जबकि transient कीवर्ड उस क्षेत्र को इंगित करता है जिसे जावा ऑब्जेक्ट सीरियलाइजेशन तंत्र (जैसे वेबफ्लो का उपयोग करते समय) द्वारा सहेजा नहीं जाना चाहिए। दोनों के पास अलग-अलग स्थितियों में उनका उपयोग होता है।

+0

हाँ, यह सच है। मैं इसके बारे में बहुत जागरूक था, लेकिन जब एक संपत्ति स्थिर transients सूची में डाल दिया जाता है, तो यह या तो serialized नहीं है (उदाहरण के लिए जब 'एक्सएमएल के रूप में इस्तेमाल किया' कास्टिंग)। तो यह क्षणिक कीवर्ड के समान व्यवहार था। मैंने अभी भी जांच की है कि क्षणिक इंटीजर काउंटर को डीबी स्कीमा में निर्यात किया जाता है, इसलिए वास्तव में उन दोनों के बीच कुछ भी आम नहीं है। वैसे भी, आपका जवाब काफी उचित है, धन्यवाद! – topr

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