JDO לעומת אובייקט ערך
JDO היא טכנולוגיית התמדה של Java שניתן להשתמש בה כדי לאחסן POJO (Plain Old Java Objects) בבסיסי נתונים ללא צורך בהבנת ההטמעות הבסיסיות של מאגרי נתונים שונים. Value Object (הידוע גם כ-Data Transfer Object) הוא דפוס עיצוב מופשט שמציג את הרעיון של מחזיק נתונים פשוט לצורך העברת נתונים בין שכבות ושכבות מרובות.
מה זה JDO?
JDO (Java Data Objects) מספק מנגנון לספק התמדה לאובייקטי Java וגישה למסד נתונים. JDO שקוף מאוד מכיוון שהוא מאפשר למפתחי יישומי Java לגשת לנתונים הבסיסיים מבלי לכתוב שום קוד ספציפי לבסיסי נתונים.ניתן להשתמש ב-JDO על פני מספר רבדים, כולל Java Standard Edition, Web-tier ושרתי יישומים. JDO API הוא חלופה להתמדה אחרת (שמירה על אובייקטים לאחר הפסקת התוכנית) של אובייקטי Java כגון Serialization, JDBC (קישוריות Java DataBase) ו-EJB CMP (Enterprise JavaBeans architecture Container Managed Persistence). JDO משתמש ב-XML ובשיפור של bytecode. היתרון העיקרי בשימוש ב-JDO API הוא שהם יכולים לאחסן נתונים ללא צורך בלימוד שפת שאילתה חדשה כגון SQL (התלויה בסוג אחסון הנתונים). JDO קל מאוד לשימוש מכיוון שמפתחים יכולים להתמקד רק במודל אובייקט התחום שלהם. לא רק זה, JDO מייעל קוד בעצמו בהתאם לגישה לנתונים. מכיוון ש-JDO API אינו קפדני על סוג מאגר הנתונים, אותו ממשק יכול לשמש מפתחי יישומי Java כדי לאחסן אובייקטי Java בכל מאגר נתונים כולל מסד נתונים יחסי, מסד נתונים של אובייקטים או XML. JDO הוא נייד מאוד מכיוון שאין צורך בשינוי או הידור מחדש כדי לרוץ על יישומי ספקים שונים.
מהו אובייקט ערך?
Value Object הידוע גם בשם Data Transfer Objects (DTO) הוא דפוס עיצוב מופשט פשוט העוסק במיכל נתונים כדי להחזיק נתונים לצורך העברת נתונים בין שכבות ושכבות. למרות שהמונח המדויק ביותר לדפוס זה הוא אובייקט העברת הנתונים, עקב טעות בגרסה הראשונה של Core J2EE הוא הוצג כ-Value Object. למרות שטעות זו תוקנה במהדורה 2, שם זה הפך לפופולרי ועדיין נעשה בו שימוש רב במקום Data Transfer Object (אך יש לציין שהמונח הנכון הוא Data Transfer Object). תבנית עיצוב DTO משמשת עם שעועית ישות, JDBC ו-JDO כדי לתקן בעיות המתרחשות ביחס לבידוד ועסקאות ביישומים ארגוניים. חשוב לציין כי מדובר רק בבעלי נתונים פשוטים המשמשים להעברת נתונים בין הלקוח למסד הנתונים והם אינם מספקים התמדה מכל סוג שהוא. DTO משרת את המטרה לפעול כאובייקטים הניתנים להמשכה ב-EJB מסורתי (כשעועית ישות לפני 3.0 אינם ניתנים לסידרה). בשלב הרכבה נפרד שהוגדר על ידי DTO, כל הנתונים המשמשים את התצוגה נרכשים ומארגנים לפני שחרור הפקד לשכבת המצגת.
מה ההבדל בין JDO ל-Value Object?
JDO היא למעשה טכנולוגיית התמדה המשמשת לאחסון אובייקטי Java בבסיסי נתונים, המספקת נוחות למפתחים על ידי טיפול בכל פרטי רמת ההטמעה ומאפשרת למפתחים להתמקד בקידוד לא ספציפי למסד נתונים. אבל, אובייקט הערך מייצג תבנית עיצוב מופשטת (לא טכנולוגיה) המספקת מחזיק נתונים גנרי המכונה אובייקט העברת נתונים שיכול להחזיק נתונים לצורך העברה בין לקוח לבסיסי נתונים. JDO מספקת את המתקן של פריטי נתונים מתמשכים, בעוד Value Object עוסק רק בשמירה על נתונים באופן זמני במהלך תקופת העברת הנתונים. במילים אחרות, Value Object אינו מספק התמדה.