קבל את כל הנתונים מטבלה עם מצב שינה

1. סקירה כללית

במדריך מהיר זה, נבדוק כיצד לקבל את כל הנתונים מטבלה עם מצב שינה באמצעות JPQL או ממשק ה- API של קריטריונים.

JPQL מספקת לנו יישום מהיר ופשוט יותר בזמן השימוש ב- Criteria API הוא דינמי וחזק יותר.

2. JPQL

JPQL מספק דרך פשוטה ופשוטה להוציא את כל הגופים מטבלה.

בואו נראה איך זה יכול להוציא את כל התלמידים מהטבלה באמצעות JPQL:

רשימה ציבורית findAllStudentsWithJpql () {return session.createQuery ("בחר FROM Student a", Student.class) .getResultList (); } 

הפגישה שלנו במצב שינה createQuery () השיטה מקבלת מחרוזת שאילתה שהוקלדה כארגומנט הראשון וסוג הישות כשני. אנו מבצעים את השאילתה באמצעות שיחה אל getResultList () שיטה המחזירה את התוצאות בתור הקלדה רשימה.

פשטות היא היתרון בגישה זו. JPQL קרוב מאוד ל- SQL, ולכן קל יותר לכתוב ולהבין.

3. ממשק API לקריטריונים

ממשק ה- API של קריטריונים מספק גישה דינמית לבניית שאילתות JPA.

זה מאפשר לנו לבנות שאילתות על ידי הפעלת מיידי אובייקטים של Java המייצגים אלמנטים של שאילתות. וזה פיתרון נקי יותר אם שאילתות נבנות משדות אופציונליים רבים מכיוון שהוא מבטל הרבה שרשור מחרוזות.

בדיוק ראינו שאילתה שנבחרה באמצעות JPQL. בואו נסתכל על המקבילה שלה באמצעות ממשק ה- API של קריטריונים:

רשימה ציבורית findAllStudentsWithCriteriaQuery () {CriteriaBuilder cb = session.getCriteriaBuilder (); CriteriaQuery cq = cb.createQuery (Student.class); שורש rootEntry = cq.from (Student.class); CriteriaQuery all = cq.select (rootEntry); TypedQuery allQuery = session.createQuery (הכל); להחזיר את allQuery.getResultList (); } 

ראשית, אנו מקבלים א CriteriaBuilder בה אנו משתמשים ליצירת הקלדה קריטריוניםשאילתא. מאוחר יותר, הגדרנו את ערך השורש עבור השאילתה. ולבסוף, אנו מבצעים זאת באמצעות getResultList () שיטה.

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

בנוסף להיותם דומים, שאילתות JPQL ושאילתות מבוססות קריטריונים של JPA הן ביצועים שווים.

4. מסקנה

במאמר זה הדגמנו כיצד להוציא את כל הישויות מטבלה באמצעות JPQL או Criteria API.

קוד המקור השלם לדוגמא זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found