POJO
בשפת התכנות ג'אווה, POJO (פּוֹג'וֹ) הם ראשי תיבות של Plain Old Java Object (בתרגום חופשי: אובייקט ג'אווה פשוט, "ישן וטוב"). המושג משמש כדי להדגיש שאובייקט מסוים הוא אובייקט רגיל של ג'אווה, ולא סוג מיוחד כלשהו של אובייקט.
המושג POJO משמש בעיקר כדי לתאר אובייקט ג'אווה שאינו מוגדר בהתבסס על שום מודל אובייקטים, קונבנציה, או תשתית תוכנה גדולה. ככל הנראה, השימוש במושג הפך מקובל בגלל הצורך במושג נפוץ וקל להבנה, כדי להבחין בין אובייקטים רגילים לאובייקטים מורכבים של תשתיות תוכנה.
JavaBean הוא מקרה פרטי של POJO, העונה על שלושת הכללים הבאים: האובייקט ניתן לסריאליזציה, יש לו קונסטרקטור שלא מקבל ארגומנטים, והוא מאפשר גישה למשתני המחלקה באמצעות מתודות get ו-set הנקראות על פי קונבנציה פשוטה למתן שמות.
הגדרה
עריכהבאופן אידיאלי, POJO הוא אובייקט ג'אווה שאינו מוגבל על ידי שום כלל חוץ מאלה הנאכפים על ידי המפרט של שפת ג'אווה עצמה. POJO לא אמור להיות מחויב לאף אחד מהבאים:
- לרשת (extend) ממחלקה כלשהי שהוגדרה מראש.
- לממש (implement) ממשק כלשהו שהוגדר מראש.
- להכיל אנוטציה (Java annotation) כלשהי שהוגדרה מראש.
עם זאת, בגלל קשיים טכניים ומסיבות אחרות, תשתיות ומוצרי תוכנה רבים המתוארים כמותאמים לעבודה עם POJOs, בכל זאת דורשים שימוש באנוטציות שהוגדרו מראש, על מנת שאפשרויות כמו persistence יעבדו כנדרש.
מקור המושג
עריכהאת המושג טבעו מרטין פאולר, רבקה פרסונס וג'וש מקנזי בספטמבר 2000:
תהינו מדוע אנשים כל כך התנגדו להשתמש באובייקטים רגילים במערכות שלהם, והגענו למסקנה שהסיבה לכך היא שלאובייקטים פשוטים היה חסר שם מהודר. אז נתנּו להם אחד, והוא תפס יפה מאוד.
POJO ממשיך את התבנית של מושגים ישנים יותר לתיאור טכנולוגיות שאינן משתמשות במאפיינים חדשים ומיוחדים, כגון:
- בטלפוניה, המושג POTS עבור Plain Old Telephone Service.
- ב-++C, המושג PODS עבור Plain Old Data Structure, מתאר מבני נתונים המשתמשים רק במאפיינים של שפת C.
- ב-Perl, המושג POD עבור Plain Old Documentation.
- בדוט נט, המקבילה ל-POJO היא POCO עבור Plain Old CLR Oject. ב-PHP, המושג הוא POPO עבור Plain Old PHP Object.