Java Persistence Query Language
Download
Report
Transcript Java Persistence Query Language
© Keren Kalif
JPA
קרן כליף
© Keren Kalif
2
:ביחידה זו נלמד
JPA מהו
JPQL
Criteria API
מהו ?JPA
© Keren Kalif
API – Java Persistence API המגדיר עבודה מול DB
זהו ממשק המגדיר ישויות ( )Entityשכל אחת באופן אוטומטי
יוצרת טבלה בDB -
כלומר ,ה DB -נוצר באמצעות annotationבשפת JAVAתוך כדי
ריצה
ישנם כל מיני מימושים ל ,JPA -למשל hibernate
3
© Keren Kalif
4
SqlServer -חיבור ל
Databases מקש ימני על services בכרטיסית
Register My SQL Server
© Keren Kalif
5
SqlServer -חיבור ל
Connect מקש ימני
Create Databse מקש ימני
במידה ומבקש קונפיגורציה..
ה service -של MySqlצריך לרוץ.
ניתן להריצו דרך ה.XAMPP -
לשים לב שה service -של ה apache -גם צריך לרוץ.
© Keren Kalif
6
יצירת הפרוייקט
© Keren Kalif
נוסיף לפרוייקט את ה lib -שנקרא MySql JDBC Driver
בתוך הפרוייקט נייצר קובץ מטיפוס :Entity Class
7
© Keren Kalif
8
persistence.xml
© Keren Kalif
9
הקובץ שנוצר:
ציון שזוהי מחלקה שתהייה
עבורה טבלה בDB -
ציון שזהו שדה שערכו ינתן
באופן סדרתי אוטומטי
10
© Keren Kalif
עדכון המחלקה
ציון ששדה זה יהיה עמודה בטבלה,
ניתן גם ללא annotationזה
ציון ששדה זה יהיה עמודה
בטבלה עם השם שצויין
למחלקה המסומנת כEntity -
חייב להיות default c’tor
11
© Keren Kalif
main -ה
persistency unit -קישור ל
persistence.xml -המוגדרת ב
DB - בc1 לשמירת האובייקט
© Keren Kalif
12
תוצר הרצת הmain -
תחת ה DB -נוצרה טבלה כשם המחלקה,
ובה השדות שהגדרנו במחלקה
מקש ימני על שם הטבלה View Data
13
© Keren Kalif
© Keren Kalif
14
חיפוש רשומה
עדכון רשומה
העדכון יבוצע בין ה-
beginלcommit -
© Keren Kalif
15
© Keren Kalif
16
מחיקת רשומה
אובייקט מוכל
ניתן להחליף ב @Embeddable -ואז לא
ניתן לשמור אובייקט כזה בפני עצמו ל-
( DBלא תיווצר טבלה)
17
© Keren Kalif
אובייקט מכיל
שדות האובייקט המוכל ישמרו
בטבלאת האובייקט המכיל
18
© Keren Kalif
main -ה
student ניתן לראות בטבלה
Address את שדות
© Keren Kalif
19
@OneToOne
במקרה זה ישמר בטבלאת
personרק המפתח הראשי
של הAddress -
נשים לב שמקרה כזה המחלקה
Addressצריכה להיות מסומנת ב-
@Entityולא ב@Embeddable -
20
© Keren Kalif
© Keren Kalif
21
הטבלאות- @OneToOne
@OneToMany
© Keren Kalif
22
התוצרים- @OneToMany
OneToOne
OneToMany
-ובאופן דומה ניתן להשתמש גם ב
@ManyToMany -@ ובManyToOne
© Keren Kalif
23
שאילתות
© Keren Kalif
24
ישנם 2סוגים של שאילתות:
– static queries שאילתות קבועות ,ללא פרמטרים
– dynamic queries שאילתות המקבלות פרמטרים
ישנם 2מנגנונים לשאילתות ב:JPA -
JPQL – Java Persistence Query .1
שפת שאילתות הדומה ל SQL -ומבוססת על סכימת הישויות והקשרים בינהן
מפוענחות בזמן קומפילציה
עדיפות לשימוש עבור static queries
Criteria Query .2
מפוענחות בזמן ריצה
עדיפות לשימוש עבור dynamic queries
JPQL – Java Persistence Query Language
ישנם 2דרכים להפעלת השאילתות:
– createQuery .1הגדרת השאילתא בתוך המתודות ,לרוב עבור
שאילתות דינאמיות
– createNameQuery .2הגדרת מאפייני השאילתא כתכונה
במחלקה ושימוש בהמשך ,לרוב עבור שאילתות סטטיות
25
© Keren Kalif
NamedQuery הגדרת
:NamedQuery הגדרת
@Entity -מתחת ל
© Keren Kalif
26
Queries -שימוש ב
-שימוש ב
NamedQuery
Query -שימוש ב
© Keren Kalif
27
הגדרה- Positional Parameters
לפני מספר
"?" הפרמטר יבוא
© Keren Kalif
28
שימוש- Positional Parameters
© Keren Kalif
29
Criteria Queries
dynamic לכן עדיפות לשימוש עבור, מפוענחות בזמן ריצה
queries
© Keren Kalif
30
יצירת המחלקות מהDB -
בהינתן ,DBניתן לייצר את התהליך ההפוך ולקבל את המחלקות:
31
© Keren Kalif
Web-Application - בJPA לבדוק פרוייקט
© Keren Kalif
32
ביחידה זו למדנו:
© Keren Kalif
33