2010-08-20 11 views
53

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

चर "आईडी, नाम, पता, वेतन" के साथ एक वर्ग "व्यक्ति" पर विचार करें - मैं इस परिदृश्य के लिए POJO कैसे बनाऊंगा? क्या पीओजेओ के नीचे कोड है?

public class Person { 
    //variables 
    People people = new People(); 
    private int id; 
    private String name; 
    private String address; 
    private int salary; 


    public int getId() { 
     return id; 
    } 

    public String getName() { 
     return name; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public int getSalary() { 
     return salary; 
    } 

    public void setId() { 
     this.id = id; 
    } 

    public void setName() { 
     this.name = name; 
    } 

    public void setAddress() { 
     this.address = address; 
    } 

    public void setSalary() { 
     this.salary = salary; 
    } 
} 
+1

जांच एक ऐसी ही सवाल का मेरा उत्तर: http://stackoverflow.com/questions/3392580/a-better-explanation-of-poco/3392625#3392625। यह पीओसीओ (पीओजेओएस का .NET संस्करण) का जिक्र कर रहा है, लेकिन मूलभूत सिद्धांत समान हैं। – RPM1984

+0

@ टिमल आप एक बार फिर मुझे समझा सकते हैं। pojo –

+0

@ Poovizhirajan.N, लंबे विलंब के लिए खेद है। किसी भी तरह से इसे याद किया। –

उत्तर

65

एक पीओजेओ प्रतिबंधों के साथ सिर्फ एक सादा, पुराना जावा बीन है। जावा बीन्स निम्न आवश्यकताओं को पूरा करना होगा:

  1. कोई आर्ग निर्माता चूक
  2. (या बूलियन्स के लिए isFoo) getFoo की बीन सम्मेलन का पालन करें और एक परिवर्तनशील विशेषता नामित foo के लिए setFoo तरीकों; अगर foo अपरिवर्तनीय है तो setFoo को छोड़ दें।
  3. को लागू करना चाहिए java.io.Serializable

POJO इनमें से किसी भी जनादेश नहीं है। यह वही है जो नाम कहता है: जेडीके के तहत संकलित एक वस्तु को सादा पुराना जावा ऑब्जेक्ट माना जा सकता है। कोई ऐप सर्वर नहीं, कोई आधार वर्ग नहीं, उपयोग करने के लिए कोई इंटरफेस आवश्यक नहीं है।

संक्षिप्त नाम पीओजेओ ईजेबी 2.0 के खिलाफ प्रतिक्रिया थी, जिसमें कई इंटरफेस, विस्तारित बेस क्लास और सरल चीजों को करने के लिए कई विधियों की आवश्यकता होती थी। कुछ लोगों, रॉड जॉनसन और मार्टिन फाउलर ने जटिलता के खिलाफ विद्रोह किया और ईजेबी लिखने के बिना एंटरप्राइज़ स्केल समाधानों को लागू करने का एक तरीका मांगा।

मार्टिन फाउलर ने एक नया परिवर्णी शब्द बनाया।

रॉड जॉनसन ने "जेजेईई बिना ईजेबी" लिखा, स्प्रिंग लिखा, ईजेबी को प्रभावित किया गया इतना संस्करण 3.1 स्प्रिंग और हाइबरनेट जैसे एक बड़े सौदे को देखता है, और इसके बाहर वीएमवेयर से एक मीठा आईपीओ मिला।एक सेम जो निर्धारित करने और मूल्य प्राप्त करने के लिए किया जाता है के रूप में

public class MyFirstPojo 
{ 
    private String name; 

    public static void main(String [] args) 
    { 
     for (String arg : args) 
     { 
      MyFirstPojo pojo = new MyFirstPojo(arg); // Here's how you create a POJO 
      System.out.println(pojo); 
     } 
    } 

    public MyFirstPojo(String name) 
    {  
     this.name = name; 
    } 

    public String getName() { return this.name; } 

    public String toString() { return this.name; } 
} 
+0

मुझे इस संदेह को फिर कभी नहीं मिलेगा। धन्यवाद। –

+7

कुछ लोग पढ़ने से पढ़ने के बजाय व्यावहारिक डेमो की तेज़ी से समझ सकते हैं। मैं उनमें से एक हूं। –

+0

मैं समझता हूं। मैं भी इस तरह से हो सकता है। मैं अपना जवाब संपादित करूंगा। – duffymo

4

एक पीओजेओ Plain Old Java Object है।

कंप्यूटिंग सॉफ्टवेयर में, POJO सादा पुराना जावा वस्तु के लिए एक परिवर्णी शब्द है:

विकिपीडिया लेख से मैं से जुड़ा हुआ। नाम पर जोर देना है कि किसी भी वस्तु एक साधारण जावा वस्तु, नहीं एक विशेष वस्तु है प्रयोग किया जाता है, और विशेष रूप में नहीं एक Enterprise JavaBean

आपका वर्ग पहले से ही एक POJO प्रतीत होता है।

+1

अरे, मैं थ्रो विकी में भी आया था। लेकिन मुझे एक व्यावहारिक स्पष्टीकरण आदमी की जरूरत है ... –

2

जब आप अपनी कक्षा को विशेष रूप से किसी दिए गए ढांचे, ओआरएम, या अन्य सिस्टम के साथ काम करने के लिए कुछ भी नहीं कर रहे हैं, जिसके लिए विशेष प्रकार की कक्षा की आवश्यकता होती है, तो आपके पास सादा पुराना जावा ऑब्जेक्ट या पीओजेओ होता है।

विडंबना यह है कि इस शब्द को बनाने के कारणों में से एक यह है कि लोग उन मामलों में उनसे बच रहे थे जहां वे समझदार थे और कुछ लोगों ने निष्कर्ष निकाला था कि ऐसा इसलिए था क्योंकि उनके पास एक फैंसी नाम नहीं था। पुरानी, ​​क्योंकि आपका प्रश्न दर्शाता है कि दृष्टिकोण काम करता था।

पुराने पीओडी "सादा पुराना डेटा" की तुलना एक सी ++ वर्ग से करें जो कुछ भी नहीं करता है सी सी संरचना नहीं कर सकती है (अधिक या कम, गैर-आभासी सदस्य जो विनाशक या तुच्छ रचनाकार नहीं हैं ' इसे पीओडी माना जा रहा है), और .NET में नया (और अधिक सीधे तुलनीय) पीओसीओ "सादा पुराना सीएलआर ऑब्जेक्ट"।

+0

आपके उत्तर वरिष्ठ के लिए धन्यवाद। लेकिन मुझे कुछ व्यावहारिक स्पष्टीकरण चाहिए। –

+0

आप "विशेष नहीं" के लिए नामकरण का व्यावहारिक स्पष्टीकरण चाहते हैं? वास्तव में? –

4

POJO वर्ग में कार्य करता है:

यहाँ एक उदाहरण है कि आप के चारों ओर अपने सिर लपेट कर सकते हैं।

public class Data 
{ 


private int id; 
    private String deptname; 
    private String date; 
    private String name; 
    private String mdate; 
    private String mname; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getDeptname() { 
     return deptname; 
    } 

    public void setDeptname(String deptname) { 
     this.deptname = deptname; 
    } 

    public String getDate() { 
     return date; 
    } 

    public void setDate(String date) { 
     this.date = date; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getMdate() { 
     return mdate; 
    } 

    public void setMdate(String mdate) { 
     this.mdate = mdate; 
    } 

    public String getMname() { 
     return mname; 
    } 

    public void setMname(String mname) { 
     this.mname = mname; 
    } 
} 
21

POJO: - POJO एक जावा किसी भी जावा भाषा विशिष्टता द्वारा मजबूर के अलावा अन्य प्रतिबंध द्वारा बाध्य नहीं वस्तु है।

POJO

  1. के गुण सभी गुण सार्वजनिक सेटर और गेटर तरीकों
  2. सभी उदाहरण चर निजी
  3. prespecified कक्षाओं का विस्तार नहीं करना चाहिए किया जाना चाहिए किया जाना चाहिए।
  4. prespecified इंटरफेस लागू नहीं करना चाहिए।
  5. में पूर्वनिर्धारित एनोटेशन शामिल नहीं होना चाहिए।
  6. यह किसी भी तर्क कंस्ट्रक्टर्स POJO

    की

उदाहरण नहीं हो सकता है

public class POJO { 

    private String value; 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 
} 
+0

# 1, # 2 विकिपीडिया पर परिभाषा का विरोध करता है। https://en.wikipedia.org/wiki/Plain_Old_Java_Object#Definition। आप "जावाबीन POJO" का वर्णन कर रहे हैं (एक शब्द जो मुझे ऑक्सीमोरोन लगता है, लेकिन यह सिर्फ मुझे है) – Nilzor

1

वहाँ मुख्य रूप से कर रहे हैं तीन विकल्प मानचित्रण उद्देश्य

  1. serialize
  2. एक्सएमएल मानचित्रण
  3. के लिए संभव हो रहे हैं
  4. POJO मैपिंग। (सादा पुराना जावा Obje सीटीएस)

pojo कक्षाओं का उपयोग करते समय, डेवलपर के डेटाबेस के साथ मानचित्रण करना आसान है। पीओजेओ कक्षाएं डेटाबेस के लिए बनाई गई हैं और साथ ही मूल्य-वस्तु वर्ग गेटटर और सेटर विधियों के साथ बनाए जाते हैं जो सामग्री को आसानी से पकड़ेंगे।

तो, डेटाबेस के साथ जावा के बीच मैपिंग के उद्देश्य के लिए, मूल्य-वस्तुएं और पीओजेओ कक्षाएं लागू की गई हैं।

1
import java.io.Serializable; 

public class Course implements Serializable { 

    protected int courseId; 
    protected String courseName; 
    protected String courseType; 

    public Course() { 
     courseName = new String(); 
     courseType = new String(); 
    } 

    public Course(String courseName, String courseType) { 
     this.courseName = courseName; 
     this.courseType = courseType; 
    } 

    public Course(int courseId, String courseName, String courseType) { 
     this.courseId = courseId; 
     this.courseName = courseName; 
     this.courseType = courseType; 
    } 

    public int getCourseId() { 
     return courseId; 
    } 

    public void setCourseId(int courseId) { 
     this.courseId = courseId; 
    } 

    public String getCourseName() { 
     return courseName; 
    } 

    public void setCourseName(String courseName) { 
     this.courseName = courseName; 
    } 

    public String getCourseType() { 
     return courseType; 
    } 

    public void setCourseType(String courseType) { 
     this.courseType = courseType; 
    } 

    @Override 
    public int hashCode() { 
     return courseId; 
    } 

    @Override 
    public boolean equals(Object obj) { 
     if (obj != null || obj instanceof Course) { 
      Course c = (Course) obj; 
      if (courseId == c.courseId && courseName.equals(c.courseName) 
        && courseType.equals(c.courseType)) 
       return true; 
     } 
     return false; 
    } 

    @Override 
    public String toString() { 
     return "Course[" + courseId + "," + courseName + "," + courseType + "]"; 
    } 
} 
+0

आपने बराबर विधि का उपयोग क्यों किया है? पीओजेओ भी गेटर्स और सेटर्स के समान है? –

0
public class UserInfo { 
     String LoginId; 
     String Password; 
     String FirstName; 
     String LastName; 
     String Email; 
     String Mobile; 
     String Address; 
     String DOB; 

     public String getLoginId() { 
      return LoginId; 
     } 

     public void setLoginId(String loginId) { 
      LoginId = loginId; 
     } 

     public String getPassword() { 
      return Password; 
     } 

     public void setPassword(String password) { 
      Password = password; 
     } 

     public String getFirstName() { 
      return FirstName; 
     } 

     public void setFirstName(String firstName) { 
      FirstName = firstName; 
     } 

     public String getLastName() { 
      return LastName; 
     } 

     public void setLastName(String lastName) { 
      LastName = lastName; 
     } 

     public String getEmail() { 
      return Email; 
     } 

     public void setEmail(String email) { 
      Email = email; 
     } 

     public String getMobile() { 
      return Mobile; 
     } 

     public void setMobile(String mobile) { 
      Mobile = mobile; 
     } 

     public String getAddress() { 
      return Address; 
     } 

     public void setAddress(String address) { 
      Address = address; 
     } 

     public String getDOB() { 
      return DOB; 
     } 

     public void setDOB(String DOB) { 
      this.DOB = DOB; 
     } 
    } 
संबंधित मुद्दे