java जावाबीन बिल्कुल क्या है?




javabeans serializable (12)

मुझे समझ में आया, मुझे लगता है कि एक "बीन" एक जावा क्लास है जिसमें गुण और गेटर्स / सेटर्स हैं। जितना मैं समझता हूं, यह सी संरचना के बराबर है। क्या यह सच है?

इसके अलावा, क्या एक बीन और नियमित कक्षा के बीच एक वास्तविक वाक्य रचनात्मक अंतर है? क्या कोई विशेष परिभाषा या इंटरफ़ेस है?

असल में, इसके लिए एक शब्द क्यों है?

संपादित करें : यदि आप बहुत दयालु हो सकते हैं और Serializable इंटरफ़ेस के बारे में जानकारी जोड़ सकते हैं, और इसका क्या अर्थ है, तो आपके उत्तर में, मैं बहुत आभारी हूं।


एक उदाहरण के साथ स्पष्टीकरण।

1. आयात java.io.Serializable

सीरियलाइजेशन के लिए, Serializable देखें।

2. निजी क्षेत्र

बाहरी वर्गों को उन क्षेत्रों को आसानी से संशोधित करने के लिए फ़ील्ड निजी होना चाहिए। सीधे उन क्षेत्रों में accesing के बजाय, usuagly गेटर / सेटर विधियों का उपयोग किया जाता है।

3. निर्माता

किसी भी तर्क के बिना एक सार्वजनिक कन्स्ट्रक्टर।

4. गेटर / सेटर

निजी क्षेत्रों को accesing के लिए गेटर और सेटर तरीकों।

/** 1. import java.io.Serializable */
public class User implements java.io.Serializable {
    /** 2. private fields */
    private int id;
    private String name;

    /** 3. Constructor */
    public User() {
    }
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    /** 4. getter/setter */
    // getter
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    // setter
    public void setId(int id) {
        this.id = is;
    }
    public void setName(String name) {
        this.name = name;
    }
}

आपके प्रश्न के दूसरे भाग के बारे में, सीरियलाइजेशन एक दृढ़ता तंत्र है जो ऑब्जेक्ट्स को हस्ताक्षरित बाइट्स के अनुक्रम के रूप में संग्रहीत करने के लिए उपयोग किया जाता है। औपचारिक रूप से कम रखें, यह किसी ऑब्जेक्ट की स्थिति को संग्रहीत करता है ताकि आप डी-सीरियलाइजेशन के बाद इसे बाद में पुनर्प्राप्त कर सकें।


इसे विशेष ध्वनि बनाने के लिए एक शब्द है। वास्तविकता कहीं भी रहस्यमय नहीं है।

असल में, एक "बीन":

  • एक serializable वस्तु है (यानी, यह Serializable लागू करता है। Serializable, और इतना सही करता है), कि
  • "गुण" हैं जिनके गेटर्स और सेटर्स कुछ नामों के साथ ही विधियां हैं (जैसे, कहें, getFoo() "फू" संपत्ति के लिए गेटर है), और
  • एक सार्वजनिक डिफ़ॉल्ट कन्स्ट्रक्टर है (इसलिए इसे इच्छानुसार बनाया जा सकता है और इसकी गुणों को सेट करके कॉन्फ़िगर किया जा सकता है)।

अद्यतन करें:

Serializable रूप में: यह कुछ भी नहीं है "मार्कर इंटरफ़ेस" (एक इंटरफ़ेस जो किसी भी फ़ंक्शन की घोषणा नहीं करता है) जो जावा को बताता है कि कार्यान्वयन वर्ग ("और यह दर्शाता है कि यह सक्षम है)" धारावाहिक "- एक प्रक्रिया है एक उदाहरण को बाइट्स की धारा में परिवर्तित करता है। उन बाइट्स को फाइलों में संग्रहीत किया जा सकता है, जो नेटवर्क कनेक्शन पर भेजे जाते हैं, आदि के पास पर्याप्त रूप से ऑब्जेक्ट का पुनर्निर्माण करने के लिए एक JVM (कम से कम, ऑब्जेक्ट के प्रकार के बारे में जानता है) को अनुमति देने के लिए पर्याप्त जानकारी है - संभवतः एक अलग उदाहरण में आवेदन, या यहां तक ​​कि एक पूरी मशीन पर भी!

बेशक, ऐसा करने के लिए, कक्षा को कुछ सीमाओं का पालन करना होगा। उनमें से प्रमुख यह है कि सभी उदाहरण फ़ील्ड या तो आदिम प्रकार (int, bool, आदि) होना चाहिए, कुछ वर्गों के उदाहरण जो क्रमिक है, या transient के रूप में चिह्नित हैं ताकि जावा उन्हें शामिल करने का प्रयास न करे। (इसका मतलब यह है कि transient क्षेत्र एक धारा पर यात्रा नहीं टिकेगा। एक वर्ग जिसमें transient क्षेत्र हैं, उन्हें आवश्यक होने पर उन्हें पुन: प्रारंभ करने के लिए तैयार किया जाना चाहिए।)

एक वर्ग जो उन सीमाओं का पालन नहीं कर सकती है उसे सीरियलज़ेबल लागू नहीं करना चाहिए (और, आईआईआरसी, जावा कंपाइलर इसे ऐसा करने नहीं देगा।)


जावाबीन जावा कक्षाएं हैं जो बेहद सरल कोडिंग सम्मेलन का पालन करती हैं। आपको बस इतना करना है

  1. Java.io को कार्यान्वित करें। क्रमिक इंटरफ़ेस - ऑब्जेक्ट की स्थिति को सहेजने के लिए
  2. ऑब्जेक्ट को तत्काल करने के लिए - एक सार्वजनिक खाली तर्क कन्स्ट्रक्टर का उपयोग करें
  3. और सार्वजनिक गेटर और सेटर विधियों को प्रदान करें - निजी चर (गुण) के मान प्राप्त करने और सेट करने के लिए।

जावा बीन्स कम कोड और अधिक कार्य दृष्टिकोण के लिए उपयोग कर रहे हैं ... जावा बीन्स का उपयोग जावा ईई में रनटाइम डिस्कवरी और एक्सेस के लिए सार्वभौमिक अनुबंध के रूप में किया जाता है। उदाहरण के लिए, जावासेवर पेजेस (जेएसपी) जावा बीन्स का उपयोग पृष्ठों या सर्लेट्स और जेएसपी के बीच डेटा ट्रांसफर ऑब्जेक्ट्स के रूप में करता है। जावा ईई का जावाबीन एक्टिवेशन फ्रेमवर्क जावा ईई में एमआईएमई डेटा प्रकारों के समर्थन को एकीकृत करने के लिए जावा बीन्स का उपयोग करता है। जावा ईई प्रबंधन API जावा ईई पर्यावरण में प्रबंधित किए जाने वाले संसाधनों के उपकरण के लिए आधार के रूप में जावाबीन का उपयोग करता है।

सीरियलाइजेशन के बारे में:

ऑब्जेक्ट क्रमबद्धता में ऑब्जेक्ट को बाइट्स के अनुक्रम के रूप में दर्शाया जा सकता है जिसमें ऑब्जेक्ट के डेटा के साथ-साथ ऑब्जेक्ट के प्रकार और ऑब्जेक्ट में संग्रहीत डेटा के प्रकार के बारे में जानकारी शामिल होती है।

एक धारावाहिक वस्तु को फ़ाइल में लिखा गया है, इसे फ़ाइल से पढ़ा जा सकता है और deserialized है, कि वस्तु और उसके डेटा का प्रतिनिधित्व करने वाली प्रकार की जानकारी और बाइट्स वस्तु को स्मृति में पुन: बनाने के लिए उपयोग किया जा सकता है।


वे serializable हैं, शून्य-तर्क कन्स्ट्रक्टर है, और गेटर और सेटर विधियों का उपयोग कर गुणों तक पहुंच की अनुमति देता है। इस मानक को शामिल करने के लिए "बीन" नाम दिया गया था, जिसका उद्देश्य जावा के लिए पुन: प्रयोज्य सॉफ़्टवेयर घटक बनाना है। wiki according to

ऑब्जेक्ट्स जो आपके एप्लिकेशन की रीढ़ की हड्डी बनाती हैं और जिन्हें स्प्रिंग आईओसी कंटेनर द्वारा प्रबंधित किया जाता है उन्हें बीन्स कहा जाता है। एक बीन एक वस्तु है जिसे स्प्रिंग आईओसी कंटेनर द्वारा तत्काल, इकट्ठा किया जाता है, और अन्यथा प्रबंधित किया जाता है। अन्यथा, एक बीन बस आपके आवेदन में कई वस्तुओं में से एक है। वसंत io के according to


एक जावा बीन एक जावा वर्ग [वैचारिक] है जो निम्नलिखित सम्मेलनों का पालन करना चाहिए:

  1. इसमें नो-एर्ग कन्स्ट्रक्टर होना चाहिए।
  2. यह Serializable होना चाहिए।
  3. यह गुणों के मूल्यों को सेट और प्राप्त करने के तरीकों को प्रदान करना चाहिए, जिन्हें गेटर और सेटर विधियों के नाम से जाना जाता है।

यह एक पुन: प्रयोज्य सॉफ्टवेयर घटक है। यह कई ऑब्जेक्ट को एक ऑब्जेक्ट में encapsulate कर सकता है ताकि एक ही वस्तु गुणक स्थानों से पहुंचा जा सके और कोड के आसान रखरखाव की दिशा में एक कदम है।


जब आप अपने प्रोजेक्ट को कई सर्वरों पर तैनात करते हैं तो आपको सीरियलाइजेशन उपयोगी लगेगा क्योंकि बीन्स जारी रहेगा और उन पर स्थानांतरित किया जाएगा।


जावाबीन सिर्फ एक मानक है

  1. सभी गुण निजी ( getters/setters उपयोग करें)
  2. एक सार्वजनिक नो-तर्क कन्स्ट्रक्टर
  3. लागू Serializable

बस। यह सिर्फ एक सम्मेलन है। हालांकि पुस्तकालयों के बहुत सारे इस पर निर्भर करते हैं ....

Serializable से, Serializable संबंध में:

Java.io.Serializable इंटरफ़ेस को लागू करने वाले वर्ग द्वारा कक्षा की Serializability सक्षम है। कक्षाएं जो इस इंटरफ़ेस को लागू नहीं करती हैं, उनमें से कोई भी राज्य क्रमबद्ध या deserialized नहीं होगा। एक serializable वर्ग के सभी उपप्रकार स्वयं serializable हैं। सीरियलाइजेशन इंटरफेस में कोई तरीका या फ़ील्ड नहीं है और केवल धारावाहिक होने के अर्थशास्त्र की पहचान करने के लिए कार्य करता है।

दूसरे शब्दों में, धारावाहिक वस्तुओं को धाराओं में लिखा जा सकता है, और इसलिए फाइलें, ऑब्जेक्ट डेटाबेस, वास्तव में कुछ भी।

इसके अलावा, जावाबीन और दूसरी कक्षा के बीच कोई वाक्यविन्यास अंतर नहीं है - एक वर्ग जावाबीन को परिभाषित करता है यदि यह मानकों का पालन करता है।

इसके लिए एक शब्द है क्योंकि मानक लाइब्रेरी को कक्षा के उदाहरणों के साथ प्रोग्रामेटिक रूप से काम करने की अनुमति देता है जिसे आप पूर्वनिर्धारित तरीके से परिभाषित करते हैं। उदाहरण के लिए, यदि कोई लाइब्रेरी उस ऑब्जेक्ट को स्ट्रीम करना चाहता है जिसे आप पास करते हैं, तो यह जानता है कि यह आपकी वजह से कर सकता है क्योंकि आपकी ऑब्जेक्ट धारावाहिक है (मान लीजिए कि lib को आपकी ऑब्जेक्ट्स उचित जावाबीन की आवश्यकता है)।


जावा बीन्स केवल सामान्य जावा कक्षाएं हैं जो कुछ सम्मेलनों का पालन करती हैं - आपको उन्हें बनाने के लिए विशेष उपकरण की आवश्यकता नहीं है।

जावा बीन कक्षाएं बनाने में दो प्राथमिक सम्मेलनों का पालन किया जाना चाहिए:

  • जावा बीन कक्षा की प्रत्येक " संपत्ति " को दो सार्वजनिक कार्यों को परिभाषित करके कार्यान्वित किया जाता है (एक "प्राप्त करें" फ़ंक्शन और "सेट" फ़ंक्शन)
  • जावा बीन कक्षा के " संचालन " कक्षा में परिभाषित अन्य सार्वजनिक कार्य हैं।

जावा बीन्स एक मानक है, और इसकी मूल वाक्यविन्यास आवश्यकताओं को अन्य उत्तरों द्वारा स्पष्ट रूप से समझाया गया है।

हालांकि, आईएमओ, यह एक साधारण वाक्यविन्यास मानक से अधिक है। जावा बीन्स का वास्तविक अर्थ या इच्छित उपयोग कोड के पुन: उपयोग और घटक-आधारित सॉफ़्टवेयर इंजीनियरिंग की सुविधा के लिए मानक के चारों ओर विभिन्न टूल का समर्थन करता है, यानी मौजूदा घटकों (कक्षाओं) को इकट्ठा करके और किसी भी लिखने के बिना डेवलपर्स को एप्लिकेशन बनाने में सक्षम बनाता है कोड (या केवल थोड़ा गोंद कोड लिखना है)। दुर्भाग्य से यह तकनीक उद्योग द्वारा कम अनुमानित और कम उपयोग की जा रही है, जिसे इस धागे के उत्तरों से बताया जा सकता है।

यदि आप जावा बीन्स पर ओरेकल के ट्यूटोरियल को पढ़ते हैं, तो आप इसमें बेहतर समझ प्राप्त कर सकते हैं।


JavaBeans की गुण

जावाबीन एक जावा ऑब्जेक्ट है जो कुछ प्रोग्रामिंग सम्मेलनों को संतुष्ट करता है:

  1. JavaBean क्लास को या तो Serializable या Serializable लागू करना चाहिए

  2. जावाबीन क्लास में नो-एर्ग कन्स्ट्रक्टर होना चाहिए

  3. सभी जावाबीन गुणों में सार्वजनिक सेटटर और गेटटर विधियां होनी चाहिए

  4. सभी जावाबीन आवृत्ति चर निजी होना चाहिए

JavaBeans का उदाहरण

@Entity
public class Employee implements Serializable{

   @Id
   private int id;
   private String name;   
   private int salary;  

   public Employee() {}

   public Employee(String name, int salary) {
      this.name = name;
      this.salary = salary;
   }
   public int getId() {
      return id;
   }
   public void setId( int id ) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName( String name ) {
      this.name = name;
   }
   public int getSalary() {
      return salary;
   }
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}




serializable