JavaRush /จาวาบล็อก /Random-TH /คำถามสัมภาษณ์จำศีล
Dr-JohnZoidberg
ระดับ
Киев

คำถามสัมภาษณ์จำศีล

เผยแพร่ในกลุ่ม
บทความนี้เป็นการแปลและปรับปรุงบทความต่างประเทศ (รายชื่อแหล่งข้อมูลอยู่ท้ายบทความ) คำตอบสำหรับคำถามบางข้อได้รับการขยายออกไป โดยมีลิงก์ไปยังแหล่งข้อมูลของบุคคลที่สามซึ่งมีคำตอบที่อาจเกิดขึ้นระหว่างกระบวนการอ่าน 1) ไฮเบอร์เนตคืออะไร? เป็นกรอบการทำงานสำหรับการแมปเอนทิตีเชิงวัตถุในฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม คุณสมบัติหลักของกรอบงาน: 1) การสร้างและอัปเดตตารางในฐานข้อมูลโดยอัตโนมัติ 2) เนื่องจากการสืบค้นหลักไปยังฐานข้อมูล (การบันทึก การอัปเดต การลบ และการค้นหา) ถูกนำเสนอเป็นวิธีการของเฟรมเวิร์ก โค้ดที่นักพัฒนาเขียนจึงลดลงอย่างมาก 3) ให้การใช้ภาษาที่คล้ายกับ SQL (HQL - ภาษาคิวรีไฮเบอร์เนต) คิวรี HQL สามารถเขียนควบคู่ไปกับออบเจ็กต์ข้อมูลได้ (คลาส POJO ที่เตรียมไว้สำหรับการทำงานกับฐานข้อมูล) 2) วิธีการไฮเบอร์เนตช่วยเรื่องการเขียนโปรแกรม? Hibernate ใช้คุณสมบัติหลายอย่างที่ทำให้งานของนักพัฒนาง่ายขึ้นอย่างมาก — หนึ่งในคุณสมบัติเหล่านี้คือการไฮเบอร์เนตช่วยให้นักพัฒนาหลีกเลี่ยงการเขียนคำสั่ง SQL ส่วนใหญ่ (มีการใช้งานอยู่แล้ว คุณเพียงแค่ต้องใช้วิธีการที่กรอบงานมอบให้) — ภายใต้ประทุน Hibernate มีเครื่องมือที่มีประโยชน์มากมายที่ช่วยเร่งความเร็วแอปพลิเคชันได้อย่างมาก โดยที่โดดเด่นที่สุดคือการแคชสองระดับและการปรับแต่งแบบ Lazy และดึงข้อมูลการถอน — สร้างตารางลงในฐานข้อมูลเอง 3) วิธีการกำหนดค่าการทำงานกับ Hibernate มีสี่วิธีในการกำหนดค่าการทำงานกับ Hibernate: - การใช้คำอธิบายประกอบ; - ไฮเบอร์เนต.cfg.xml; - ไฮเบอร์เนตคุณสมบัติ; - ความคงอยู่.xml วิธีการกำหนดค่าที่พบบ่อยที่สุด: ผ่านคำอธิบายประกอบและไฟล์ Peristence.xml สำหรับไฟล์ hibernate.properties และ hibernate.cfg.xml ดังนั้น hibernate.cfg.xml จึงมีความสำคัญมากกว่า (หากแอปพลิเคชันมีทั้งสองไฟล์ การตั้งค่าจาก ยอมรับไฟล์ hibernate.cfg.xml) การกำหนดค่าด้วยคำอธิบายประกอบ แม้ว่าจะสะดวก แต่ก็ไม่สามารถทำได้เสมอไป ตัวอย่างเช่น หากคุณต้องการให้มีการกำหนดค่าเอนทิตีที่แตกต่างกันสำหรับฐานข้อมูลที่แตกต่างกันหรือสำหรับสถานการณ์ที่แตกต่างกัน คุณควรใช้ไฟล์การกำหนดค่า xml 4) Hibernate ใช้อินเทอร์เฟซหลักใดบ้าง มีอินเทอร์เฟซหลักห้าอินเทอร์เฟซที่ใช้ในทุกแอปพลิเคชันที่เกี่ยวข้องกับ Hibernate: - อินเทอร์เฟซเซสชัน; - อินเตอร์เฟซ SessionFactory; — อินเทอร์เฟซการกำหนดค่า; — ส่วนต่อประสานธุรกรรม — อินเทอร์เฟซแบบสอบถามและเกณฑ์ 5) บทบาทของอินเทอร์เฟซเซสชันในไฮเบอร์เนตคืออะไร? เซสชันเป็นอินเทอร์เฟซหลักที่รับผิดชอบในการสื่อสารกับฐานข้อมูล นอกจากนี้ยังช่วยสร้างออบเจ็กต์คำขอเพื่อรับออบเจ็กต์ถาวร (วัตถุถาวร - วัตถุที่มีอยู่ในฐานข้อมูลแล้ว วัตถุคำขอ - วัตถุที่ได้รับเมื่อเราได้รับผลลัพธ์ของการสืบค้นในฐานข้อมูล มันขึ้นอยู่กับสิ่งนี้ที่แอปพลิเคชันใช้งานได้) สามารถรับวัตถุเซสชันได้จาก SessionFactory: Session session = sessionFactory.openSession(); บทบาทของอินเทอร์เฟซเซสชัน: เป็น wrapper สำหรับการเชื่อมต่อ jdbc กับฐานข้อมูล (https://ru.wikipedia.org/wiki/Java_Database_Connectiv..) - เป็นโรงงานสำหรับการทำธุรกรรม (ตามธุรกรรมเอกสารอย่างเป็นทางการ - อนุญาตให้แอปพลิเคชันกำหนดหน่วยของงาน ซึ่งในสาระสำคัญหมายความว่าธุรกรรมกำหนด ขอบเขตการดำเนินงานที่เกี่ยวข้องกับฐานข้อมูล) — เป็นผู้ดูแลแคชระดับแรกที่จำเป็น 6) บทบาทของอินเทอร์เฟซ SessionFactory ใน Hibernate คืออะไร? มันมาจากวัตถุ SessionFactory ที่เราได้รับวัตถุประเภทเซสชัน มี SessionFactory เพียงแห่งเดียวสำหรับแอปพลิเคชันทั้งหมด และจะเริ่มต้นได้เมื่อแอปพลิเคชันเริ่มทำงาน SessionFactory แคช meta-data และแบบสอบถาม SQL ที่แอปพลิเคชันใช้บ่อยระหว่างการดำเนินการ นอกจากนี้ยังแคชข้อมูลที่ได้รับจากธุรกรรมใดรายการหนึ่งและสามารถนำไปใช้ในธุรกรรมอื่นได้ สามารถรับวัตถุ SessionFactory ได้โดยใช้การโทรต่อไปนี้: SessionFactory sessionFactory = configuration.buildSessionFactory(); 7) คอลเลกชันประเภทใดบ้างที่มีให้ใน Hibernate? กระเป๋า ชุด ​​รายการ แผนที่ อาเรย์ 8) Bag type collection คืออะไร และเพราะเหตุใดจึงใช้? ในการนำไปใช้ ประเภทการรวบรวม Bag จะคล้ายกับ Set มาก ความแตกต่างคือ Bag สามารถเก็บค่าที่ซ้ำกันได้ Bag เก็บรายการองค์ประกอบที่ไม่ได้จัดทำดัชนี ตารางส่วนใหญ่ในฐานข้อมูลมีดัชนีที่แสดงตำแหน่งขององค์ประกอบข้อมูลที่สัมพันธ์กัน ดัชนีเหล่านี้จะแสดงในตารางเป็นคอลัมน์แยกต่างหาก ด้วยการแมปเชิงวัตถุสัมพันธ์ ค่าของคอลัมน์ดัชนีจะถูกแมปกับดัชนีในอาร์เรย์ ดัชนีในรายการ หรือคีย์ในแมป หากคุณต้องการรับคอลเลกชันของออบเจ็กต์ที่ไม่มีข้อมูลดัชนี คุณสามารถใช้คอลเลกชันประเภท Bag หรือ Set (คอลเลกชันมีข้อมูลในรูปแบบที่ไม่ได้เรียงลำดับ แต่สามารถจัดเรียงได้ตามคำขอ) 9) อะไรคือความแตกต่างในการทำงานของ load(); วิธีการ? และรับ();? โหลด() วิธีการ; มักใช้เมื่อคุณไม่แน่ใจว่าวัตถุที่ร้องขอนั้นอยู่ในฐานข้อมูลแล้ว หากไม่พบวัตถุ วิธีการจะส่งข้อยกเว้น หากพบวัตถุ วิธีการส่งคืนวัตถุพร็อกซีซึ่งเป็นลิงก์ไปยังวัตถุที่อยู่ในฐานข้อมูล (ยังไม่ได้ทำการร้องขอฐานข้อมูล ชนิด ของการดึงข้อมูลแบบขี้เกียจ) คำขอโดยตรงไปยังฐานข้อมูลเมื่อเราเข้าถึงวัตถุที่ต้องการโดยตรงผ่านวัตถุพร็อกซี รับ () วิธีการ; ใช้แล้ว คุณจะไม่แน่ใจ 100 เปอร์เซ็นต์ว่าวัตถุที่ร้องขออยู่ในฐานข้อมูลหรือไม่ ในกรณีที่เข้าถึงวัตถุที่ไม่มีอยู่จริง จะใช้เมธอด get(); จะกลับมาเป็นโมฆะ หากพบวัตถุนั้น get() วิธีการ; จะส่งคืนออบเจ็กต์เองและจะทำการสืบค้นฐานข้อมูลทันที 10) Lazy fetching ใน Hibernate คืออะไร? ประเภทการชำระเงิน Lazy ใน Hibernate เชื่อมโยงกับเอนทิตีลีฟ (รอง) และกำหนดนโยบายการชำระเงินที่ใช้ร่วมกัน หากมีคำขอให้ตรวจสอบเอนทิตีหลัก ตัวอย่างง่ายๆ: มีบ้านเอนทิตี จัดเก็บข้อมูลเกี่ยวกับหมายเลข ถนน จำนวนอพาร์ทเมนท์ และข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในอพาร์ตเมนต์ ครอบครัวเหล่านี้ก่อตั้งเอนทิตีลูกที่เกี่ยวข้องกับเอนทิตีของบ้าน เมื่อเราขอข้อมูลเกี่ยวกับบ้าน อาจไม่จำเป็นเลยที่เราจะทราบข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในบ้านนั้น การดึงข้อมูลอย่างเกียจคร้านมาช่วยเรา ซึ่งช่วยให้เราสามารถกำหนดค่าเอนทิตีของบ้านเพื่อให้ข้อมูลเกี่ยวกับครอบครัวเท่านั้น เมื่อมีการร้องขอ นี่เป็นคำขอที่มีนัยสำคัญและทำให้แอปพลิเคชันเร็วขึ้น ©dev-อ่าว ตารางส่วนใหญ่ในฐานข้อมูลมีดัชนีที่แสดงตำแหน่งขององค์ประกอบข้อมูลที่สัมพันธ์กัน ดัชนีเหล่านี้จะแสดงในตารางเป็นคอลัมน์แยกต่างหาก ด้วยการแมปเชิงวัตถุสัมพันธ์ ค่าของคอลัมน์ดัชนีจะถูกแมปกับดัชนีในอาร์เรย์ ดัชนีในรายการ หรือคีย์ในแมป หากคุณต้องการรับคอลเลกชันของออบเจ็กต์ที่ไม่มีข้อมูลดัชนี คุณสามารถใช้คอลเลกชันประเภท Bag หรือ Set (คอลเลกชันมีข้อมูลในรูปแบบที่ไม่ได้เรียงลำดับ แต่สามารถจัดเรียงได้ตามคำขอ) 9) อะไรคือความแตกต่างในการทำงานของ load(); วิธีการ? และรับ();? โหลด() วิธีการ; มักใช้เมื่อคุณไม่แน่ใจว่าวัตถุที่ร้องขอนั้นอยู่ในฐานข้อมูลแล้ว หากไม่พบวัตถุ วิธีการจะส่งข้อยกเว้น หากพบวัตถุ วิธีการส่งคืนวัตถุพร็อกซีซึ่งเป็นลิงก์ไปยังวัตถุที่อยู่ในฐานข้อมูล (ยังไม่ได้ทำการร้องขอฐานข้อมูล ชนิด ของการดึงข้อมูลแบบขี้เกียจ) คำขอโดยตรงไปยังฐานข้อมูลเมื่อเราเข้าถึงวัตถุที่ต้องการโดยตรงผ่านวัตถุพร็อกซี รับ () วิธีการ; ใช้แล้ว คุณจะไม่แน่ใจ 100 เปอร์เซ็นต์ว่าวัตถุที่ร้องขออยู่ในฐานข้อมูลหรือไม่ ในกรณีที่เข้าถึงวัตถุที่ไม่มีอยู่จริง จะใช้เมธอด get(); จะกลับมาเป็นโมฆะ หากพบวัตถุนั้น get() วิธีการ; จะส่งคืนออบเจ็กต์เองและจะทำการสืบค้นฐานข้อมูลทันที 10) Lazy fetching ใน Hibernate คืออะไร? ประเภทการชำระเงิน Lazy ใน Hibernate เชื่อมโยงกับเอนทิตีลีฟ (รอง) และกำหนดนโยบายการชำระเงินที่ใช้ร่วมกัน หากมีคำขอให้ตรวจสอบเอนทิตีหลัก ตัวอย่างง่ายๆ: มีบ้านเอนทิตี จัดเก็บข้อมูลเกี่ยวกับหมายเลข ถนน จำนวนอพาร์ทเมนท์ และข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในอพาร์ตเมนต์ ครอบครัวเหล่านี้ก่อตั้งเอนทิตีลูกที่เกี่ยวข้องกับเอนทิตีของบ้าน เมื่อเราขอข้อมูลเกี่ยวกับบ้าน อาจไม่จำเป็นเลยที่เราจะทราบข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในบ้านนั้น การดึงข้อมูลอย่างเกียจคร้านมาช่วยเรา ซึ่งช่วยให้เราสามารถกำหนดค่าเอนทิตีของบ้านเพื่อให้ข้อมูลเกี่ยวกับครอบครัวเท่านั้น เมื่อมีการร้องขอ นี่เป็นคำขอที่มีนัยสำคัญและทำให้แอปพลิเคชันเร็วขึ้น ©dev-อ่าว ตารางส่วนใหญ่ในฐานข้อมูลมีดัชนีที่แสดงตำแหน่งขององค์ประกอบข้อมูลที่สัมพันธ์กัน ดัชนีเหล่านี้จะแสดงในตารางเป็นคอลัมน์แยกต่างหาก ด้วยการแมปเชิงวัตถุสัมพันธ์ ค่าของคอลัมน์ดัชนีจะถูกแมปกับดัชนีในอาร์เรย์ ดัชนีในรายการ หรือคีย์ในแมป หากคุณต้องการรับคอลเลกชันของออบเจ็กต์ที่ไม่มีข้อมูลดัชนี คุณสามารถใช้คอลเลกชันประเภท Bag หรือ Set (คอลเลกชันมีข้อมูลในรูปแบบที่ไม่ได้เรียงลำดับ แต่สามารถจัดเรียงได้ตามคำขอ) 9) อะไรคือความแตกต่างในการทำงานของ load(); วิธีการ? และรับ();? โหลด() วิธีการ; มักใช้เมื่อคุณไม่แน่ใจว่าวัตถุที่ร้องขอนั้นอยู่ในฐานข้อมูลแล้ว หากไม่พบวัตถุ วิธีการจะส่งข้อยกเว้น หากพบวัตถุ วิธีการส่งคืนวัตถุพร็อกซีซึ่งเป็นลิงก์ไปยังวัตถุที่อยู่ในฐานข้อมูล (ยังไม่ได้ทำการร้องขอฐานข้อมูล ชนิด ของการดึงข้อมูลแบบขี้เกียจ) คำขอโดยตรงไปยังฐานข้อมูลเมื่อเราเข้าถึงวัตถุที่ต้องการโดยตรงผ่านวัตถุพร็อกซี รับ () วิธีการ; ใช้แล้ว คุณจะไม่แน่ใจ 100 เปอร์เซ็นต์ว่าวัตถุที่ร้องขออยู่ในฐานข้อมูลหรือไม่ ในกรณีที่เข้าถึงวัตถุที่ไม่มีอยู่จริง จะใช้เมธอด get(); จะกลับมาเป็นโมฆะ หากพบวัตถุนั้น get() วิธีการ; จะส่งคืนออบเจ็กต์เองและจะทำการสืบค้นฐานข้อมูลทันที 10) Lazy fetching ใน Hibernate คืออะไร? ประเภทการชำระเงิน Lazy ใน Hibernate เชื่อมโยงกับเอนทิตีลีฟ (รอง) และกำหนดนโยบายการชำระเงินที่ใช้ร่วมกัน หากมีคำขอให้ตรวจสอบเอนทิตีหลัก ตัวอย่างง่ายๆ: มีบ้านเอนทิตี จัดเก็บข้อมูลเกี่ยวกับหมายเลข ถนน จำนวนอพาร์ทเมนท์ และข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในอพาร์ตเมนต์ ครอบครัวเหล่านี้ก่อตั้งเอนทิตีลูกที่เกี่ยวข้องกับเอนทิตีของบ้าน เมื่อเราขอข้อมูลเกี่ยวกับบ้าน อาจไม่จำเป็นเลยที่เราจะทราบข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในบ้านนั้น การดึงข้อมูลอย่างเกียจคร้านมาช่วยเรา ซึ่งช่วยให้เราสามารถกำหนดค่าเอนทิตีของบ้านเพื่อให้ข้อมูลเกี่ยวกับครอบครัวเท่านั้น เมื่อมีการร้องขอ นี่เป็นคำขอที่มีนัยสำคัญและทำให้แอปพลิเคชันเร็วขึ้น ©dev-อ่าว สืบค้นโดยตรงไปยังฐานข้อมูลเมื่อเราเข้าถึงวัตถุที่ต้องการโดยตรงผ่านวัตถุพร็อกซี รับ () วิธีการ; ใช้แล้ว คุณจะไม่แน่ใจ 100 เปอร์เซ็นต์ว่าวัตถุที่ร้องขออยู่ในฐานข้อมูลหรือไม่ ในกรณีที่เข้าถึงวัตถุที่ไม่มีอยู่จริง จะใช้เมธอด get(); จะกลับมาเป็นโมฆะ หากพบวัตถุนั้น get() วิธีการ; จะส่งคืนออบเจ็กต์เองและจะทำการสืบค้นฐานข้อมูลทันที 10) Lazy fetching ใน Hibernate คืออะไร? ประเภทการชำระเงิน Lazy ใน Hibernate เชื่อมโยงกับเอนทิตีลีฟ (รอง) และกำหนดนโยบายการชำระเงินที่ใช้ร่วมกัน หากมีคำขอให้ตรวจสอบเอนทิตีหลัก ตัวอย่างง่ายๆ: มีบ้านเอนทิตี จัดเก็บข้อมูลเกี่ยวกับหมายเลข ถนน จำนวนอพาร์ทเมนท์ และข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในอพาร์ตเมนต์ ครอบครัวเหล่านี้ก่อตั้งเอนทิตีลูกที่เกี่ยวข้องกับเอนทิตีของบ้าน เมื่อเราขอข้อมูลเกี่ยวกับบ้าน อาจไม่จำเป็นเลยที่เราจะทราบข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในบ้านนั้น การดึงข้อมูลอย่างเกียจคร้านมาช่วยเรา ซึ่งช่วยให้เราสามารถกำหนดค่าเอนทิตีของบ้านเพื่อให้ข้อมูลเกี่ยวกับครอบครัวเท่านั้น เมื่อมีการร้องขอ นี่เป็นคำขอที่มีนัยสำคัญและทำให้แอปพลิเคชันเร็วขึ้น ©dev-อ่าว สืบค้นโดยตรงไปยังฐานข้อมูลเมื่อเราเข้าถึงวัตถุที่ต้องการโดยตรงผ่านวัตถุพร็อกซี รับ () วิธีการ; ใช้แล้ว คุณจะไม่แน่ใจ 100 เปอร์เซ็นต์ว่าวัตถุที่ร้องขออยู่ในฐานข้อมูลหรือไม่ ในกรณีที่เข้าถึงวัตถุที่ไม่มีอยู่จริง จะใช้เมธอด get(); จะกลับมาเป็นโมฆะ หากพบวัตถุนั้น get() วิธีการ; จะส่งคืนออบเจ็กต์เองและจะทำการสืบค้นฐานข้อมูลทันที 10) Lazy fetching ใน Hibernate คืออะไร? ประเภทการชำระเงิน Lazy ใน Hibernate เชื่อมโยงกับเอนทิตีลีฟ (รอง) และกำหนดนโยบายการชำระเงินที่ใช้ร่วมกัน หากมีคำขอให้ตรวจสอบเอนทิตีหลัก ตัวอย่างง่ายๆ: มีบ้านเอนทิตี จัดเก็บข้อมูลเกี่ยวกับหมายเลข ถนน จำนวนอพาร์ทเมนท์ และข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในอพาร์ตเมนต์ ครอบครัวเหล่านี้ก่อตั้งเอนทิตีลูกที่เกี่ยวข้องกับเอนทิตีของบ้าน เมื่อเราขอข้อมูลเกี่ยวกับบ้าน อาจไม่จำเป็นเลยที่เราจะทราบข้อมูลเกี่ยวกับครอบครัวที่อาศัยอยู่ในบ้านนั้น การดึงข้อมูลอย่างเกียจคร้านมาช่วยเรา ซึ่งช่วยให้เราสามารถกำหนดค่าเอนทิตีของบ้านเพื่อให้ข้อมูลเกี่ยวกับครอบครัวเท่านั้น เมื่อมีการร้องขอ นี่เป็นคำขอที่มีนัยสำคัญและทำให้แอปพลิเคชันเร็วขึ้น ©dev-อ่าว
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION