מה ההבדל בין JPA ל- JDBC?


תשובה 1:

JDBC הוא כלי סטנדרטי לחיבור למסד נתונים ישירות ולהפעלת SQL נגדו, לדוגמה בחר * מתוך TableName וכו '. ניתן להחזיר ערכות נתונים בהן המשתמש יכול להתמודד באפליקציה שלו, והוא יכול לעשות את כל הדברים הרגילים כמו לעדכן, למחוק , הכנס נהלים וכו '. זוהי אחת הטכנולוגיות העומדות מאחורי רוב ה- Java DBA (כולל ספקי JPA).

אחת הבעיות העיקריות ביישומי JDBC מסורתיים היא שלמשתמש לעתים קרובות יכול להיות קוד זדוני שבו ההיגיון מעורבב עם SQL, המון מיפוי בין מערכי נתונים לאובייקטים מתרחשים וכו '.

JPA הוא כלי רשמי למיפוי יחסי אובייקטים. JPA היא טכנולוגיה המאפשרת למשתמש למפות בין אובייקטים בטבלאות קוד וטבלאות מסד נתונים. JPA יכול "להסתיר" את ה- SQL מהמפתח כך שכל מה שהם עוסקים בשיעורי Java, והספק מאפשר לך לשמור אותם ולהעמיס אותם מרחוק. לרוב, ניתן להשתמש במיפוי קבצי XML או ביאורים על מתנחלים וגיטרים כדי לספר לספק JPA. אילו שדות באובייקט המשתמש ממפות לאילו שדות ב- DB. hibernate הוא ספק ה- JPA הפופולרי ביותר.

כמה דוגמאות אחרות כולל OpenJPA, טופלינק וכו '.

שינה וספקים פופולריים אחרים עבור JPA כותבים SQL ומשתמשים ב- JDBC לקריאה וכתיבה מ- DB ל- DB.

תודה.

אם אתה אוהב את התשובה שלי אז תמציא את זה.


תשובה 2:

זה יהיה מורכב קל להבין את ההבדל בין שניהם אם אתה מתחיל. אני חושב שעליך להתחיל קודם כל להבין את ההבדל בין JDBC למצב שינה. אני מקווה שאתה יודע מה זה JDBC, עדיין כתיאור כללי: JDBC מייצג קישוריות מסד נתונים של Java. JDBC הוא ממשק API של Java לחיבור וביצוע השאילתה באמצעות ה- db. הוא מספק לנהגים להתחבר ל- db. אתה יכול להשתמש בממשק ה- API של JDBC כדי לגשת לנתונים טבליים המאוחסנים בכל מסד נתונים יחסי. בעזרת JDBC API, אנו יכולים לשמור, לעדכן, למחוק ולהביא נתונים מהמאגר.

עכשיו מה מצב שינה? זוהי מסגרת שלא כמו JDBC, עליכם לייבא את הספריות במצב שינה לפני שתשתמשו בהן, בעוד JDBC הוא חלק מ- J2SE עצמו. Hibernate עושה את אותו הדבר ש- JDBC פותח עבורו, אך אתה יכול לומר Hibernate הוא רמת התקדמות של JDBC. Hibernate מפשט את הפיתוח של יישום Java לקיום אינטראקציה עם מסד הנתונים. זהו כלי ORM, פירושו שהוא ממפה את אובייקטי הג'אווה בטבלאות db. שיעור ג'אווה יכול לייצג טבלה ב- db. לדוגמה, אם מיפית את טבלת "emp_26" כשכבת עובדים במצב שינה, היית כותב שאילתה מונחה עצמים פשוטה כדי להביא את כל העובדים מהטבלה empl_26: "מעובד" // במצב שינה "בחר * מתוך emp_26" // ב JDBC.

ישנן הרבה מאוד תכונות שה- Hibernate מספק כמו מטמון, מיפוי אסוציאציות, מיפוי ירושה, HQL, עימוד ועוד רבים אחרים שאינם זמינים ב- JDBC.

מגיע ל- JPA, זה מפרט, זה סט של שיעורים וממשקים. JPA זקוק לכלי ליישומו וכלי זה יכול להיות במצב שינה. על ידי הטמעת JPA, אתה יכול לעשות את אותו הדבר שעושה Hibernate, אך בפורמט של JPA. אם JPA הוא ריקוד אז נדרש מצב שינה או כל כלי אחר כדי לספק לו במה לרקוד. דרך אגב זה לא אומר ש- Hibernate לא יכול לרקוד בלי JPA, Hibernate יש גם ריקוד משלה.


תשובה 3:

JDBC הוא סטנדרט לחיבור ל- DB ישירות ולהפעלת SQL נגדו - למשל SELECT * FRA USERS וכו '. ניתן להחזיר ערכות נתונים בהן אתה יכול להתמודד באפליקציה שלך, ואתה יכול לעשות את כל הדברים הרגילים כמו INSERT, DELETE, הפעל נהלים מאוחסנים וכו '. זוהי אחת הטכנולוגיות העומדות בבסיס רוב הגישה למסדי נתונים ב- Java (כולל ספקי JPA).

אחד הבעיות עם אפליקציות JDBC מסורתיות הוא שלעתים קרובות יש לך קוד מטורף שבו מתרחשים המון מיפוי בין מערכי נתונים לאובייקטים, היגיון מעורבב עם SQL וכו '.

JPA הוא תקן למיפוי יחס אובייקטים. זוהי טכנולוגיה המאפשרת למפות בין אובייקטים בטבלאות קוד וטבלאות מסד נתונים. זה יכול "להסתיר" את ה- SQL מהמפתח כך שכל מה שהם עוסקים בו הם שיעורי ג'אווה, והספק מאפשר לך לשמור אותם ולהעמיס אותם בצורה קסומה. לרוב, ניתן להשתמש בקבצי מיפוי של XML או ביאורים בגיטרים ובמתנחלים כדי לומר לספק JPA אילו שדות במפת האובייקטים שלך לאילו שדות ב- DB. ספק ה- JPA המפורסם ביותר הוא Hibernate, כך שזה מקום טוב להתחיל בדוגמאות קונקרטיות.

דוגמאות נוספות כוללות OpenJPA, טופלינק וכו '.