JavaRush /בלוג Java /Random-HE /שאלות ראיון למצב שינה
Dr-JohnZoidberg
רָמָה
Киев

שאלות ראיון למצב שינה

פורסם בקבוצה
מאמר זה הוא תרגום ושיפור מאמרים זרים (רשימה של משאבים רשומה בסוף המאמר). התשובות לכמה שאלות מורחבות, מסופקים קישורים למשאבים של צד שלישי המכילים תשובות שעלולות להתעורר במהלך תהליך הקריאה. 1) מה זה Hibernate? זוהי מסגרת למיפוי יחסי אובייקט של ישויות לתוך מסדי נתונים יחסיים מסורתיים. המאפיינים העיקריים של המסגרת: 1) יצירה ועדכון אוטומטי של טבלאות בבסיסי נתונים; 2) מכיוון שהשאילתות העיקריות למסד הנתונים (שמירה, עדכון, מחיקה וחיפוש) מוצגות כשיטות של ה-framework, הקוד שהמפתח כותב מצטמצם משמעותית; 3) מספק שימוש בשפה דמוית SQL (HQL - שפת שאילתות שינה). ניתן לכתוב שאילתות HQL לצד אובייקטי נתונים (שיעורי POJO שהוכנו לעבודה עם מסד נתונים). 2) איך לעבור שינהעוזר בתכנות? Hibernate מיישמת מספר תכונות שמפשטות מאוד את עבודת המפתחים. - אחת התכונות הללו היא שמצב שינה מאפשר למפתח להימנע מכתיבת רוב שאילתות SQL (הן כבר מיושמות, אתה רק צריך להשתמש בשיטות שהמסגרת מספקת). - מתחת למכסה המנוע, ל-Hibernate יש חבורה של כלים שימושיים שמאיצים משמעותית את היישום, כשהבולטים שבהם הם שמירה בשתי רמות במטמון וכוונון עדין של משיכות עצלות ואחזור. - יוצר טבלאות למסד הנתונים עצמו. 3) שיטות להגדרת עבודה עם Hibernate. ישנן ארבע דרכים להגדיר עבודה עם Hibernate: - באמצעות הערות; - hibernate.cfg.xml; - hibernate.properties; - persistence.xml. שיטת התצורה הנפוצה ביותר: באמצעות הערות וקובץ persistence.xml, באשר לקבצי hibernate.properties ו-hibernate.cfg.xml, אז hibernate.cfg.xml חשובה יותר (אם האפליקציה כוללת את שני הקבצים, אז ההגדרות מ- הקובץ hibernate.cfg יתקבל. xml). תצורה עם הערות, אם כי נוחה, לא תמיד אפשרית; לדוגמה, אם ברצונך לקבל תצורות ישות שונות עבור מסדי נתונים שונים או עבור מצבים שונים, עליך להשתמש בקובצי תצורה של xml. 4) באילו ממשקים מרכזיים משתמש Hibernate? ישנם חמישה ממשקים מרכזיים המשמשים בכל יישום הקשור ל-Hibernate: - ממשק הפעלה; - ממשק SessionFactory; - ממשק תצורה; - ממשק עסקה; - ממשקי שאילתות וקריטריונים. 5) מה תפקידו של ממשק ה-Session ב-Hibernate? Session הוא הממשק העיקרי שאחראי על התקשורת עם מסד הנתונים. זה גם עוזר ליצור אובייקטי בקשה להשגת אובייקטים מתמידים. (persistent object - אובייקט שכבר נמצא במסד הנתונים; request object - אובייקט שמתקבל כאשר אנו מקבלים תוצאה של שאילתה במסד הנתונים, עם זה האפליקציה עובדת). ניתן להשיג את האובייקט Session מ-SessionFactory: Session session = sessionFactory.openSession(); תפקידו של ממשק ה-Session: הוא עטיפה לחיבור jdbc למסד הנתונים; (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - הוא מפעל לעסקאות (לפי עסקת התיעוד הרשמי - מאפשר לאפליקציה להגדיר יחידות עבודה, מה שבעצם אומר שהעסקה מגדירה גבולות הפעולות הקשורות למסד נתונים). - הוא האפוטרופוס של המטמון החובה ברמה הראשונה. 6) מה תפקידו של ממשק SessionFactory ב-Hibernate? זה מהאובייקט SessionFactory שאנחנו מקבלים אובייקטים מסוג Session. יש רק SessionFactory אחד עבור היישום כולו והוא מאותחל כאשר היישום מתחיל. SessionFactory מאחסן במטמון מטא נתונים ושאילתות SQL שנמצאות בשימוש תדיר על ידי האפליקציה במהלך הפעולה. הוא גם מאחסן מידע שהתקבל באחת מהעסקאות וניתן להשתמש בו בעסקאות אחרות. ניתן להשיג את האובייקט SessionFactory באמצעות הקריאה הבאה: SessionFactory sessionFactory = configuration.buildSessionFactory(); 7) אילו סוגי אוספים מסופקים ב-Hibernate? תיק, סט, רשימה, מפה, מערך. 8) מהי קולקציית תיקים ומדוע משתמשים בה? ביישום שלו, סוג איסוף התיקים דומה מאוד ל-Set, ההבדל הוא שבאג יכול לאחסן ערכים כפולים. תיק מאחסן רשימה לא מסודרת של אלמנטים. לרוב הטבלאות במסד הנתונים יש אינדקסים המציגים את המיקום של רכיב נתונים זה ביחס לזה; אינדקסים אלו מיוצגים בטבלה כעמודה נפרדת. עם מיפוי יחסי אובייקט, הערכים של עמודת אינדקס ממופים לאינדקס במערך, לאינדקס ברשימה או למפתח במפה. אם אתה צריך לקבל אוסף של אובייקטים שאינם מכילים נתוני אינדקס, אז אתה יכול להשתמש באוספים מסוג Bag או Set (אוספים מכילים נתונים בצורה לא ממוינת, אך ניתן למיין אותם לפי הבקשה). 9) מה ההבדל בפעולת שיטות ה-load(); וקבל();? שיטת load(); משמש בדרך כלל כאשר אינך בטוח שהאובייקט המבוקש כבר נמצא במסד הנתונים. אם האובייקט לא נמצא אז השיטה זורקת חריגה אם האובייקט נמצא השיטה מחזירה אובייקט proxy שהוא קישור לאובייקט שנמצא במסד הנתונים (עדיין לא בוצעה בקשת בסיס הנתונים, מעין של אחזור עצל), בקשה ישירה למסד הנתונים כאשר אנו ניגשים ישירות לאובייקט הדרוש דרך אובייקט פרוקסי. get() שיטה; בשימוש אז, אינך בטוח ב-100 אחוז אם האובייקט המבוקש נמצא במסד הנתונים. במקרה של גישה לאובייקט לא קיים, השיטה get(); יחזיר null. אם האובייקט נמצא, השיטה get(); יחזיר את האובייקט עצמו ושאילתת מסד הנתונים תתבצע באופן מיידי. 10) מה עצלן מביא ב-Hibernate? סוג התשלום העצל ב-Hibernate משויך לישויות עלים (ילד) ומגדיר מדיניות קופה משותפת אם יש בקשה להוצאת ישות אב. דוגמה פשוטה: יש בית ישות. היא מאחסנת מידע על מספרה, רחוב, מספר הדירות ומידע על המשפחות המתגוררות בדירות; משפחות אלו מהוות ישות ילדה ביחס ליישות הבית. כאשר אנו מבקשים מידע על בית, יתכן ויהיה לנו מיותר לחלוטין לדעת מידע על המשפחות המתגוררות בו, כאן בא לעזרתנו אחזור עצל, המאפשר לנו להגדיר את ישות הבית כך שמידע על משפחות יסופק רק על פי בקשה, זה משמעותי מעכיר את הבקשה ומאיץ את היישום. ©dev-bay לרוב הטבלאות במסד הנתונים יש אינדקסים המציגים את המיקום של רכיב נתונים זה ביחס לזה; אינדקסים אלו מיוצגים בטבלה כעמודה נפרדת. עם מיפוי יחסי אובייקט, הערכים של עמודת אינדקס ממופים לאינדקס במערך, לאינדקס ברשימה או למפתח במפה. אם אתה צריך לקבל אוסף של אובייקטים שאינם מכילים נתוני אינדקס, אז אתה יכול להשתמש באוספים מסוג Bag או Set (אוספים מכילים נתונים בצורה לא ממוינת, אך ניתן למיין אותם לפי הבקשה). 9) מה ההבדל בפעולת שיטות ה-load(); וקבל();? שיטת load(); משמש בדרך כלל כאשר אינך בטוח שהאובייקט המבוקש כבר נמצא במסד הנתונים. אם האובייקט לא נמצא אז השיטה זורקת חריגה אם האובייקט נמצא השיטה מחזירה אובייקט proxy שהוא קישור לאובייקט שנמצא במסד הנתונים (עדיין לא בוצעה בקשת בסיס הנתונים, מעין של אחזור עצל), בקשה ישירה למסד הנתונים כאשר אנו ניגשים ישירות לאובייקט הדרוש דרך אובייקט פרוקסי. get() שיטה; בשימוש אז, אינך בטוח ב-100 אחוז אם האובייקט המבוקש נמצא במסד הנתונים. במקרה של גישה לאובייקט לא קיים, השיטה get(); יחזיר null. אם האובייקט נמצא, השיטה get(); יחזיר את האובייקט עצמו ושאילתת מסד הנתונים תתבצע באופן מיידי. 10) מה עצלן מביא ב-Hibernate? סוג התשלום העצל ב-Hibernate משויך לישויות עלים (ילד) ומגדיר מדיניות קופה משותפת אם יש בקשה להוצאת ישות אב. דוגמה פשוטה: יש בית ישות. היא מאחסנת מידע על מספרה, רחוב, מספר הדירות ומידע על המשפחות המתגוררות בדירות; משפחות אלו מהוות ישות ילדה ביחס ליישות הבית. כאשר אנו מבקשים מידע על בית, יתכן ויהיה לנו מיותר לחלוטין לדעת מידע על המשפחות המתגוררות בו, כאן בא לעזרתנו אחזור עצל, המאפשר לנו להגדיר את ישות הבית כך שמידע על משפחות יסופק רק על פי בקשה, זה משמעותי מעכיר את הבקשה ומאיץ את היישום. ©dev-bay לרוב הטבלאות במסד הנתונים יש אינדקסים המציגים את המיקום של רכיב נתונים זה ביחס לזה; אינדקסים אלו מיוצגים בטבלה כעמודה נפרדת. עם מיפוי יחסי אובייקט, הערכים של עמודת אינדקס ממופים לאינדקס במערך, לאינדקס ברשימה או למפתח במפה. אם אתה צריך לקבל אוסף של אובייקטים שאינם מכילים נתוני אינדקס, אז אתה יכול להשתמש באוספים מסוג Bag או Set (אוספים מכילים נתונים בצורה לא ממוינת, אך ניתן למיין אותם לפי הבקשה). 9) מה ההבדל בפעולת שיטות ה-load(); וקבל();? שיטת load(); משמש בדרך כלל כאשר אינך בטוח שהאובייקט המבוקש כבר נמצא במסד הנתונים. אם האובייקט לא נמצא אז השיטה זורקת חריגה אם האובייקט נמצא השיטה מחזירה אובייקט proxy שהוא קישור לאובייקט שנמצא במסד הנתונים (עדיין לא בוצעה בקשת בסיס הנתונים, מעין של אחזור עצל), בקשה ישירה למסד הנתונים כאשר אנו ניגשים ישירות לאובייקט הדרוש דרך אובייקט פרוקסי. get() שיטה; בשימוש אז, אינך בטוח ב-100 אחוז אם האובייקט המבוקש נמצא במסד הנתונים. במקרה של גישה לאובייקט לא קיים, השיטה get(); יחזיר null. אם האובייקט נמצא, השיטה get(); יחזיר את האובייקט עצמו ושאילתת מסד הנתונים תתבצע באופן מיידי. 10) מה עצלן מביא ב-Hibernate? סוג התשלום העצל ב-Hibernate משויך לישויות עלים (ילד) ומגדיר מדיניות קופה משותפת אם יש בקשה להוצאת ישות אב. דוגמה פשוטה: יש בית ישות. היא מאחסנת מידע על מספרה, רחוב, מספר הדירות ומידע על המשפחות המתגוררות בדירות; משפחות אלו מהוות ישות ילדה ביחס ליישות הבית. כאשר אנו מבקשים מידע על בית, יתכן ויהיה לנו מיותר לחלוטין לדעת מידע על המשפחות המתגוררות בו, כאן בא לעזרתנו אחזור עצל, המאפשר לנו להגדיר את ישות הבית כך שמידע על משפחות יסופק רק על פי בקשה, זה משמעותי מעכיר את הבקשה ומאיץ את היישום. ©dev-bay שאילתה ישירה למסד הנתונים כאשר אנו ניגשים ישירות לאובייקט הנדרש דרך אובייקט פרוקסי. get() שיטה; בשימוש אז, אינך בטוח ב-100 אחוז אם האובייקט המבוקש נמצא במסד הנתונים. במקרה של גישה לאובייקט לא קיים, השיטה get(); יחזיר null. אם האובייקט נמצא, השיטה get(); יחזיר את האובייקט עצמו ושאילתת מסד הנתונים תתבצע באופן מיידי. 10) מה עצלן מביא ב-Hibernate? סוג התשלום העצל ב-Hibernate משויך לישויות עלים (ילד) ומגדיר מדיניות קופה משותפת אם יש בקשה להוצאת ישות אב. דוגמה פשוטה: יש בית ישות. היא מאחסנת מידע על מספרה, רחוב, מספר הדירות ומידע על המשפחות המתגוררות בדירות; משפחות אלו מהוות ישות ילדה ביחס ליישות הבית. כאשר אנו מבקשים מידע על בית, יתכן ויהיה לנו מיותר לחלוטין לדעת מידע על המשפחות המתגוררות בו, כאן בא לעזרתנו אחזור עצל, המאפשר לנו להגדיר את ישות הבית כך שמידע על משפחות יסופק רק על פי בקשה, זה משמעותי מעכיר את הבקשה ומאיץ את היישום. ©dev-bay שאילתה ישירה למסד הנתונים כאשר אנו ניגשים ישירות לאובייקט הנדרש דרך אובייקט פרוקסי. get() שיטה; בשימוש אז, אינך בטוח ב-100 אחוז אם האובייקט המבוקש נמצא במסד הנתונים. במקרה של גישה לאובייקט לא קיים, השיטה get(); יחזיר null. אם האובייקט נמצא, השיטה get(); יחזיר את האובייקט עצמו ושאילתת מסד הנתונים תתבצע באופן מיידי. 10) מה עצלן מביא ב-Hibernate? סוג התשלום העצל ב-Hibernate משויך לישויות עלים (ילד) ומגדיר מדיניות קופה משותפת אם יש בקשה להוצאת ישות אב. דוגמה פשוטה: יש בית ישות. היא מאחסנת מידע על מספרה, רחוב, מספר הדירות ומידע על המשפחות המתגוררות בדירות; משפחות אלו מהוות ישות ילדה ביחס ליישות הבית. כאשר אנו מבקשים מידע על בית, יתכן ויהיה לנו מיותר לחלוטין לדעת מידע על המשפחות המתגוררות בו, כאן בא לעזרתנו אחזור עצל, המאפשר לנו להגדיר את ישות הבית כך שמידע על משפחות יסופק רק על פי בקשה, זה משמעותי מעכיר את הבקשה ומאיץ את היישום. ©dev-bay
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION