קורס Javaמתקדם JPA קרן כליף Javaמתקדם | 2 | ©Keren Kalif |JPA ביחידה זו נלמד: מהו JPA יצירת אובייקטים וטבלאות באמצעות JPA עדכון רשומות בDB - שאילתות מהJPQL :DB - Javaמתקדם | 3 | ©Keren Kalif |JPA מהו ?JPA API – Java Persistence API המגדיר עבודה מול DB זהו ממשק המגדיר ישויות ( )Entityשכל אחת באופן אוטומטי יוצרת טבלה בDB - o כלומר ,ה DB -נוצר באמצעות annotationבשפת JAVAתוך כדי ריצה ישנם כל מיני מימושים ל ,JPA -למשל eclipseLink, hibernate Javaמתקדם | 4 | ©Keren Kalif |JPA יצירת פרוייקט ולכן צריך שה tomcat -ירוץ, ובהמשך גם ה service -של הsql - Javaמתקדם | 5 | ©Keren Kalif |JPA הגדרת החיבור לDB - להוסיף את ה jar -המכיל את ה- driverשל ה SQL -לפרוייקט Javaמתקדם | 6 | ©Keren Kalif |JPA יצירת JPA Entity JPA Entity היא מחלקה שמנגנון הJPA - יודע לייצר עבורה טבלה בבסיס הנתונים זוהי מחלקה רגילה עם סימון של annotation Javaמתקדם | 7 | ©Keren Kalif |JPA יצירת JPA Entity סימון ששדה זה הוא מפתח לטבלה הוספת השדות למחלקה Javaמתקדם | 8 | ©Keren Kalif |JPA התוצר ציון שזוהי מחלקה שתהייה עבורה טבלה בDB - נוצרת מחלקה שיש לה ( default c’torריק) ומתודות setלכל התכונות .כך המנגנון יודע להפעיל את המתודות המתאימות על מנת למלא את ערכי התכונות. 9 | ©Keren Kalif |JPA windows preferences | מתקדםJava ..ואם מקבלים את השגיאה : עבור השגיאה "The XXX cannot be resolved" Javaמתקדם | 10 | ©Keren Kalif |JPA דוגמת שימוש שם הרכיב המכיל את אוסף המחלקות שנתמוך עבורן ב.persistency - מוגדר בקובץ persistence.xml לשמירת האובייקט d1בDB - נשים לב שלא הגדרנו בשום מקום את הגדרות החיבור ל..DB - 11 | ©Keren Kalif |JPA | מתקדםJava persistence.xml הקובץ DB - מגדיר את הגדרות החיבור ל META-INF נמצא בתיקייה Javaמתקדם | 12 | ©Keren Kalif |JPA תוצר ההרצה במידה ולא הייתה קיימת הטבלה dogב DB -היא נוצרה כך שכל שדה במחלקה הינו עמודה בטבלה וכן נוספה לטבלה שורה עם נתוני האובייקט שיצרנו בתוכנית Javaמתקדם | 13 | ©Keren Kalif |JPA ניתן להחליט ששדה המפתח ינתן אוטומטית יצרנו אובייקט מבלי לעדכן עבורו את שדה הid - Javaמתקדם | 14 | ©Keren Kalif |JPA קביעת שם העמודה בטבלה ציון ששדה זה יהיה עמודה בטבלה, ניתן גם ללא annotationזה ציון ששדה זה יהיה עמודה בטבלה עם השם שצויין 15 | ©Keren Kalif |JPA | מתקדםJava חיפוש רשומה Javaמתקדם | 16 | ©Keren Kalif |JPA עדכון רשומה העדכון יבוצע בין ה- beginלcommit - 17 | ©Keren Kalif |JPA | מתקדםJava מחיקת רשומה Javaמתקדם | 18 | ©Keren Kalif |JPA אובייקט מוכל משמע לא תיווצר טבלה למחלקה זו ,ושדותיה ישמרו בטבלה של האובייקט המכיל Javaמתקדם | 19 | ©Keren Kalif |JPA אובייקט מכיל שדות האובייקט המוכל ישמרו בטבלאת האובייקט המכיל 20 | ©Keren Kalif |JPA | מתקדםJava student ניתן לראות בטבלה Address את שדות Javaמתקדם | 21 | ©Keren Kalif |JPA @OneToOne במקרה זה ישמר בטבלאת personרק המפתח הראשי של הAddress - נשים לב שמקרה כזה המחלקה Addressצריכה להיות מסומנת ב @Entity -ולא ב@Embeddable - 22 | ©Keren Kalif |JPA | מתקדםJava הטבלאות- @OneToOne 23 | ©Keren Kalif |JPA | מתקדםJava @OneToMany 24 | ©Keren Kalif |JPA | מתקדםJava @OneToMany Javaמתקדם | 25 | ©Keren Kalif |JPA - @OneToManyהתוצרים טבלאת הקשר נוצרה באופן אוטומטי! ובאופן דומה ניתן להשתמש גם ב- @ManyToOneוב@ManyToMany - Javaמתקדם | 26 | ©Keren Kalif |JPA שאילתות ישנם 2סוגים של שאילתות: o o – static queriesשאילתות קבועות ,ללא פרמטרים – dynamic queriesשאילתות המקבלות פרמטרים ישנם 2מנגנונים לשאילתות ב:JPA - JPQL – Java Persistence Query .1 • .2 שפת שאילתות הדומה ל SQL -ומבוססת על סכימת הישויות והקשרים בינהן Criteria Query Javaמתקדם | 27 | ©Keren Kalif |JPA JPQL – Java Persistence Query Language ישנן 2דרכים להפעלת השאילתות: .1 – createQueryהגדרת השאילתא בתוך המתודות ,לרוב עבור שאילתות דינאמיות .2 – createNameQueryהגדרת מאפייני השאילתא כתכונה במחלקה ושימוש בהמשך ,לרוב עבור שאילתות סטטיות 28 | ©Keren Kalif |JPA | מתקדםJava :NamedQuery הגדרת @Entity -מתחת ל 29 | ©Keren Kalif |JPA | מתקדםJava NamedQuery -שימוש ב Query -שימוש ב 30 | ©Keren Kalif |JPA | מתקדםJava הגדרה- Positional Parameters "?" לפני מספר הפרמטר יבוא 31 | ©Keren Kalif |JPA | מתקדםJava שימוש- Positional Parameters Javaמתקדם | 32 | ©Keren Kalif |JPA יצירת המחלקות מהDB - בהינתן ,DBניתן לייצר את התהליך ההפוך ולקבל את המחלקות: New Jpa Entities from Tables Javaמתקדם | 33 | ©Keren Kalif |JPA ביחידה זו למדנו: מהו JPA יצירת אובייקטים וטבלאות באמצעות JPA עדכון רשומות בDB - שאילתות מהJPQL :DB -
© Copyright 2024