वे स्थान जहाँ JavaBeans का उपयोग किया जाता है?


172

JavaBean क्या है और मुझे इसकी आवश्यकता क्यों है? चूंकि मैं कक्षा और इंटरफ़ेस संरचना के साथ सभी एप्लिकेशन बना सकता हूं? मुझे सेम की आवश्यकता क्यों है? और क्या आप मुझे कुछ उदाहरण दे सकते हैं जहां कक्षाएं और इंटरफेस के बजाय सेम आवश्यक हैं?

कृपया नीचे दिए गए संदर्भ में बीन की अनिवार्यता के बारे में बताएं:

  • Wep ऐप्स
  • स्टैंडअलोन ऐप्स

10
मुझे आशा है कि आप "जावा बीन्स" और "एंटरप्राइज जावा बीन्स या ईजेबी" के बीच भ्रमित नहीं होंगे।
राहुल

53
वास्तव में मैं खुद बीन के बारे में नहीं जानता, फिर मैं ईजेबी के साथ कैसे भ्रमित हो सकता हूं .. लेकिन इसके साथ कुछ भी खास नहीं है ..
सिद्धार्थ

जवाबों:


178

वे अक्सर वास्तविक विश्व डेटा का प्रतिनिधित्व करते हैं। यहाँ एक जावबीन का सरल उदाहरण दिया गया है:

public class User implements java.io.Serializable {

    // Properties.
    private Long id;
    private String name;
    private Date birthdate;

    // Getters.
    public Long getId() { return id; }
    public String getName() { return name; }
    public Date getBirthdate() { return birthdate; }

    // Setters.
    public void setId(Long id) { this.id = id; }
    public void setName(String name) { this.name = name; }
    public void setBirthdate(Date birthdate) { this.birthdate = birthdate; }

    // Important java.lang.Object overrides.
    public boolean equals(Object other) {
        return (other instanceof User) && (id != null) ? id.equals(((User) other).id) : (other == this);
    }
    public int hashCode() {
        return (id != null) ? (getClass().hashCode() + id.hashCode()) : super.hashCode();
    }
    public String toString() {
        return String.format("User[id=%d,name=%s,birthdate=%d]", id, name, birthdate);
    }
}

क्रियान्वयन Serializable करना अनिवार्य नहीं है, लेकिन बहुत उपयोगी है अगर आप जावा की मेमोरी के बाहर जावबीन को जारी रखने या स्थानांतरित करने में सक्षम होना चाहते हैं, जैसे हार्डडिस्क या नेटवर्क में।

उदाहरण के लिए एक DAO वर्ग आप इसका उपयोग उन उपयोगकर्ताओं की सूची बनाने के लिए कर सकते हैं जिनमें आप डेटाबेस में तालिका का डेटा संग्रहीत करते हैं user:

List<User> users = new ArrayList<User>();
while (resultSet.next()) {
    User user = new User();
    user.setId(resultSet.getLong("id"));
    user.setName(resultSet.getString("name"));
    user.setBirthdate(resultSet.getDate("birthdate"));
    users.add(user);
}
return users;

उदाहरण के लिए एक सर्वलेट वर्ग जिसका उपयोग आप डेटाबेस से यूआई में डेटा स्थानांतरित करने के लिए कर सकते हैं :

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    List<User> users = userDAO.list();
    request.setAttribute("users", users);
    request.getRequestDispatcher("users.jsp").forward(request, response);
}

उदाहरण के लिए, एक JSP पेज जिसे आप EL द्वारा एक्सेस कर सकते हैं , जो डेटा प्रदर्शित करने के लिए Javabean सम्मेलनों का अनुसरण करता है:

<table>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Birthdate</th>
    </tr>
    <c:forEach items="${users}" var="user">
        <tr>
            <td>${user.id}</td>
            <td><c:out value="${user.name}" /></td>
            <td><fmt:formatDate value="${user.birthdate}" pattern="yyyy-MM-dd" /></td>
        </tr>
    </c:forEach>
</table>

क्या इस का कोई मतलब निकलता है? आप देखते हैं, यह एक तरह का सम्मेलन है जिसका उपयोग आप हर जगह डेटा को स्टोर , ट्रांसफर और एक्सेस करने के लिए कर सकते हैं ।

यह सभी देखें:


11
अच्छा स्पष्टीकरण, और आमतौर पर इस कार्यान्वयन के
14:00

लेकिन जावा में इसका उल्लेख है कि हमें क्रमांकन लागू करना चाहिए ताकि आप इसे स्पष्ट कर सकें?
एसएसपी

8
@SSP: 1) कोई जावदोक नहीं है। 2) "चाहिए"! = "चाहिए"।
बालुसक

61

खुद को काटता है

JavaBeans हर जगह हैं, वे एक कन्वेंशन हैं और बस हर एक छोटे से बड़े पुस्तकालय के बारे में हैं जो चीजों को स्वचालित करने के लिए उन सम्मेलनों का उपयोग करते हैं। केवल कुछ कारणों के कारण JavaBeans का उपयोग किया जाना चाहिए:

  • वे अच्छी तरह से सीरियल करते हैं।
  • प्रतिबिंब का उपयोग कर तत्काल किया जा सकता है।
  • अन्यथा बहुत आसानी से प्रतिबिंब का उपयोग करके नियंत्रित किया जा सकता है।
  • व्यवसाय कोड से वास्तविक डेटा को इनकैप्सुलेट करने के लिए अच्छा है।
  • आम सम्मेलनों का अर्थ है कि कोई भी आपकी फलियों का उपयोग कर सकता है और आप किसी भी तरह के प्रलेखन / मैनुअल के बिना आसानी से और सुसंगत तरीके से हर किसी का उपयोग कर सकते हैं।
  • POJO के बहुत करीब जो वास्तव में सिस्टम के अलग-अलग हिस्सों के बीच और भी अधिक अंतर है।

इसके अलावा वहाँ पाठ्यक्रम जावा JavaBeans है जो एक पूरे मामले हैं और उन्हें सादे JavaBeans के साथ नहीं मिलाया जाना चाहिए। मैं सिर्फ EJB का उल्लेख करना चाहता था: क्योंकि नाम समान हैं और उन दोनों को भ्रमित करना आसान है।

वेब एप्लिकेशन में बीन्स

यदि आप वेब एप्लिकेशन संदर्भ में "सामान्य" JavaBeans पर विचार करते हैं, तो वे आपके पैरों में जूते पहनने की तुलना में अधिक समझ में आते हैं। चूंकि सर्वलेट स्पेसिफिकेशन के लिए सत्रों को क्रमबद्ध होना आवश्यक है, इसका मतलब है कि आपको सत्र में अपना डेटा स्टोर करना चाहिए क्योंकि यह धारावाहिक है - फिर इसे सेम क्यों नहीं बनाया जाए! बस सत्र में अपने SomeBusinessDataBean फेंक दो और तुम जाने के लिए अच्छा है, आसानी से, विनिर्देश-अनुपालन और सुविधाजनक है।

इसके अलावा एप्लिकेशन के आसपास उस डेटा को ट्रांसफर करना बहुत आसान है क्योंकि JavaBeans आपको अपने एप्लिकेशन के पुर्ज़ों को पूरी तरह से डिकूप करने में मदद करता है। एक बहुत बड़े निगम के भीतर विभागों के रूप में एक पत्र और आवेदन के विभिन्न उप-प्रणालियों के रूप में JavaBeans के बारे में सोचें: विभाग विभाग विभाग को डेटा का एक गुच्छा मेल करता है। विभाग को पता नहीं है - या यहां तक ​​कि देखभाल भी - जहां डेटा बस से आया था जैसा कि होना चाहिए और बस पत्र को खोल सकते हैं, उसमें से सामान पढ़ सकते हैं और उस डेटा के आधार पर अपनी बात कर सकते हैं।

स्टैंडअलोन अनुप्रयोगों में बीन्स

वास्तव में उपरोक्त क्या है स्टैंडअलोन ऐप्स पर भी लागू होता है, एकमात्र अंतर यह है कि आप यूआई के साथ कुछ और गड़बड़ कर सकते हैं क्योंकि स्टैंडअलोन अनुप्रयोगों में स्टेटफुल यूआई है: एस जबकि वेब अनुप्रयोगों में स्टेटल्स यूआई हैं: जो कि कुछ मामलों में केवल स्टेट यूआई का अनुकरण करते हैं: । इस अंतर के कारण, स्टैंडअलोन एप्लिकेशन के साथ गड़बड़ करना आसान है, लेकिन यह एक पूरे विषय के लायक है और सीधे जावाबीन से संबंधित नहीं है।


50

बीन वास्तव में ज्यादा कुछ नहीं है। एक वर्ग के लिए एक "सेम" होना चाहिए, इसके लिए सभी आवश्यक है:

  • एक सार्वजनिक, कोई तर्क निर्माता नहीं है
  • सीरियल करने योग्य होने के लिए (सीरियल के इंटरफ़ेस को लागू करने के लिए, सीधे या उसके सुपर क्लास में से एक के माध्यम से)।

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

आप यहां सूर्य से अधिक सीधे मिल सकते हैं ।


15

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

हम जल्द ही देखेंगे कि एक सॉफ्टवेयर डेवलपर को कक्षा में कौन से विशिष्ट परिवर्तन करने चाहिए ताकि यह जावा बीन के रूप में उपयोग करने योग्य हो। हालांकि, जावा डिजाइनरों का एक लक्ष्य इस तकनीक का उपयोग करना आसान बनाना था। इसलिए, कोड परिवर्तन न्यूनतम हैं।

जावा बीन्स के फायदे

एक सॉफ्टवेयर घटक वास्तुकला सॉफ्टवेयर बिल्डिंग ब्लॉकों से निपटने के लिए मानक तंत्र प्रदान करता है। निम्नलिखित सूची कुछ विशिष्ट लाभों के बारे में बताती है, जो जावा घटक घटक डेवलपर के लिए प्रदान करता है:

  • बीन जावा के "राइट-वन, रन-कहीं भी" प्रतिमान के सभी लाभों को प्राप्त करता है।
  • बीन के गुणों, घटनाओं और तरीकों को एक एप्लिकेशन बिल्डर टूल के संपर्क में लाया जा सकता है।
  • बीन को विभिन्न स्थानों में सही ढंग से संचालित करने के लिए डिज़ाइन किया जा सकता है, जो इसे वैश्विक बाजारों में उपयोगी बनाता है।
  • किसी व्यक्ति को बीन को कॉन्फ़िगर करने में मदद करने के लिए सहायक सॉफ्टवेयर प्रदान किया जा सकता है। यह सॉफ़्टवेयर केवल तभी आवश्यक है जब उस घटक के लिए डिज़ाइन-टाइम पैरामीटर सेट किए जा रहे हों। इसे रन-टाइम वातावरण में शामिल करने की आवश्यकता नहीं है।
  • बीन की कॉन्फ़िगरेशन सेटिंग्स को लगातार भंडारण में सहेजा जा सकता है और बाद के समय में बहाल किया जा सकता है।
  • एक बीन अन्य वस्तुओं से घटनाओं को प्राप्त करने के लिए पंजीकरण कर सकता है और ऐसी घटनाओं को उत्पन्न कर सकता है जो अन्य वस्तुओं को भेजी जाती हैं।

यहाँ एक जावबीन का सरल उदाहरण दिया गया है:

public class MyBean implements java.io.Serializable
{

       protected  int theValue;

       public MyBean()
       {
       }

       public void setMyValue(int newValue)
       {
           theValue = newValue;
       }

      public int getMyValue()
      {
           return theValue;
      }

}

यह एक वास्तविक बीन है, जिसका नाम MyBean है, जिसमें स्टेट (वैरिएबल theValue) है, जो कि JavaBeans दृढ़ता तंत्र द्वारा स्वचालित रूप से सहेजा और पुनर्स्थापित किया जाएगा, और इसमें MyValue नामक एक संपत्ति है जो एक दृश्य प्रोग्रामिंग वातावरण द्वारा उपयोग करने योग्य है। इस बीन का कोई दृश्य प्रतिनिधित्व नहीं है, लेकिन यह एक जावाबीन घटक की आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.