คำถามสัมภาษณ์จำศีล 50 อันดับแรก (2025)
ต่อไปนี้เป็นคำถามและคำตอบในการสัมภาษณ์ของ Hibernate สำหรับนักศึกษาใหม่และผู้สมัครที่มีประสบการณ์เพื่อให้ได้งานในฝัน
1. ไฮเบอร์เนตคืออะไร?
Hibernate เป็นเฟรมเวิร์กยอดนิยมของ Java ซึ่งช่วยให้การแมป Object Relational มีประสิทธิภาพโดยใช้ไฟล์การกำหนดค่าในรูปแบบ XML หลังจากการแมปออบเจ็กต์ Java กับตารางฐานข้อมูล ฐานข้อมูลจะถูกใช้และจัดการโดยใช้ออบเจ็กต์ Java โดยไม่ต้องเขียนคำสั่งฐานข้อมูลที่ซับซ้อน
ดาวน์โหลดไฟล์ PDF ฟรี: คำถามและคำตอบสัมภาษณ์จำศีล
2. ออมคืออะไร?
ORM (Object Relational Mapping) เป็นแนวคิดพื้นฐานของเฟรมเวิร์ก Hibernate ซึ่งแมปตารางฐานข้อมูลด้วย Java Objects จากนั้นจัดเตรียมต่างๆ APIเพื่อดำเนินการประเภทต่างๆ บนตารางข้อมูล
3. คุณสมบัติของคลาสถูกแมปกับคอลัมน์ของตารางฐานข้อมูลใน Hibernate อย่างไร
การแมประหว่างคุณสมบัติของคลาสและคอลัมน์ของตารางระบุไว้ใน XML ไฟล์ดังตัวอย่างด้านล่าง:
4. การใช้งาน Configuration Interface ในไฮเบอร์เนตคืออะไร?
อินเทอร์เฟซการกำหนดค่าของเฟรมเวิร์กไฮเบอร์เนตใช้เพื่อกำหนดค่าไฮเบอร์เนต มันยังชินกับ บูต จำศีล เอกสารการแมปของไฮเบอร์เนตจะอยู่โดยใช้อินเทอร์เฟซนี้
5. เราจะใช้อินเทอร์เฟซแบบกำหนดเองใหม่เพื่อปรับปรุงการทำงานของอินเทอร์เฟซในตัวของไฮเบอร์เนตได้อย่างไร
เราสามารถใช้อินเทอร์เฟซส่วนขยายเพื่อเพิ่มฟังก์ชันการทำงานที่จำเป็นซึ่งอินเทอร์เฟซในตัวไม่รองรับ
6. ไฟล์การแมปทั้งหมดของ hibernate ควรมีนามสกุล .hbm.xml เพื่อให้ทำงานได้อย่างถูกต้องหรือไม่
ไม่ การมีนามสกุล .hbm.xml ถือเป็นแบบแผนและไม่ใช่ข้อกำหนดสำหรับชื่อไฟล์การแมปแบบไฮเบอร์เนต เราสามารถมีนามสกุลไฟล์การแมปเหล่านี้ได้
7. เราจะสร้างโรงงานเซสชั่นในโหมดไฮเบอร์เนตได้อย่างไร?
หากต้องการสร้างเซสชันแฟกทอรีในไฮเบอร์เนต ออบเจ็กต์ของการกำหนดค่าจะถูกสร้างขึ้นก่อนซึ่งอ้างอิงถึงเส้นทางของไฟล์การกำหนดค่า จากนั้นสำหรับการกำหนดค่านั้น เซสชันแฟกทอรีจะถูกสร้างขึ้นตามตัวอย่างด้านล่าง:
Configuration config = new Configuration(); config.addResource("myinstance/configuration.hbm.xml"); config.setProperties( System.getProperties() ); SessionFactory sessions = config.buildSessionFactory();
8. POJO คืออะไร และมีความสำคัญอย่างไร?
POJOs (Plain Old Java Objects) คือ java bean ที่มีเมธอด getter และ setter ที่เหมาะสมสำหรับคุณสมบัติแต่ละรายการ
การใช้ POJO แทนคลาส Java แบบธรรมดาส่งผลให้ได้โค้ดที่มีประสิทธิภาพและสร้างมาอย่างดี
9. HQL คืออะไร?
HQL เป็นภาษาคิวรีที่ใช้ใน Hibernate ซึ่งเป็นส่วนขยายของ SQL- HQL เป็นภาษาคิวรีที่มีประสิทธิภาพ เรียบง่าย และยืดหยุ่นมากในการดำเนินการประเภทต่างๆ บนฐานข้อมูลเชิงสัมพันธ์โดยไม่ต้องเขียนคิวรีฐานข้อมูลที่ซับซ้อน
10. เราจะเรียกใช้ขั้นตอนการจัดเก็บในโหมดไฮเบอร์เนตได้อย่างไร?
ในโหมดไฮเบอร์เนต เราสามารถดำเนินการขั้นตอนการจัดเก็บโดยใช้โค้ดดังต่อไปนี้:
11. API เกณฑ์คืออะไร?
Criteria เป็น API ไฮเบอร์เนตที่เรียบง่ายแต่ทรงพลัง ซึ่งใช้ในการดึงข้อมูลเอนทิตีผ่านองค์ประกอบของออบเจ็กต์ตามเกณฑ์
12. การใช้เทมเพลต Hibernate มีประโยชน์อย่างไร?
ต่อไปนี้เป็นประโยชน์หลักบางประการของการใช้เทมเพลต Hibernate:
ก. การปิดเซสชันเป็นไปโดยอัตโนมัติ
ข. การโต้ตอบกับเซสชันไฮเบอร์เนตจะง่ายขึ้น
ค. การจัดการข้อยกเว้นเป็นไปโดยอัตโนมัติ
13. เราจะเห็น SQL ที่สร้างในโหมดไฮเบอร์เนตบนคอนโซลได้อย่างไร?
เราจำเป็นต้องเพิ่มสิ่งต่อไปนี้ในไฟล์การกำหนดค่าไฮเบอร์เนตเพื่อเปิดใช้งานการดู SQL บนคอนโซลเพื่อการแก้ไขจุดบกพร่อง:
14. คอลเลกชันสองประเภทในโหมดไฮเบอร์เนตคืออะไร?
ต่อไปนี้เป็นคอลเลกชั่นสองประเภทในโหมดไฮเบอร์เนต:
- คอลเลกชันที่เรียงลำดับ
- สั่งซื้อคอลเลกชัน
15. วิธี session.save() และ session.saveOrUpdate() ในโหมดไฮเบอร์เนตแตกต่างกันอย่างไร?
วิธีการบันทึกเซสชัน () บันทึกเฉพาะเมื่อคีย์หลักไม่ซ้ำกันและจะไม่สามารถแทรกได้หากมีคีย์หลักอยู่แล้วในตาราง
เมธอด saveOrUpdate() แทรกระเบียนใหม่หากคีย์หลักไม่ซ้ำกัน และจะอัปเดตระเบียนที่มีอยู่หากมีคีย์หลักอยู่ในตารางอยู่แล้ว
16.การจำศีลมีคุณประโยชน์อะไรบ้าง เจดีบีซี?
- Hibernate สามารถใช้ได้อย่างราบรื่นกับฐานข้อมูลประเภทใดก็ได้ เนื่องจากฐานข้อมูลเป็นอิสระ ในขณะที่ในกรณีของ JDBC นักพัฒนาจะต้องเขียนแบบสอบถามเฉพาะฐานข้อมูล
- เมื่อใช้ Hibernate นักพัฒนาไม่จำเป็นต้องเป็นผู้เชี่ยวชาญในการเขียนแบบสอบถามที่ซับซ้อน เนื่องจาก HQL ช่วยให้กระบวนการเขียนแบบสอบถามง่ายขึ้น ในขณะที่ในกรณีของ JDBC ซึ่งเป็นงานของนักพัฒนาในการเขียนและปรับแต่งแบบสอบถาม
- ในกรณีของไฮเบอร์เนต ไม่จำเป็นต้องสร้างพูลการเชื่อมต่อ เนื่องจากไฮเบอร์เนตจะจัดการการเชื่อมต่อทั้งหมดโดยอัตโนมัติ ในขณะที่ในกรณีของ JDBC จำเป็นต้องสร้างพูลการเชื่อมต่อ
17. เราจะรับสถิติการจำศีลได้อย่างไร?
เราสามารถรับสถิติการจำศีลได้โดยใช้เมธอด getStatistics() ของคลาส SessionFactory ดังแสดงด้านล่าง:
SessionFactory.getStatistics()
18. สถานะอินสแตนซ์ชั่วคราวใน Hibernate คืออะไร?
หากอินสแตนซ์ไม่เชื่อมโยงกับบริบทถาวรใดๆ และไม่เคยเชื่อมโยงกับบริบทถาวรใดๆ เลย ถือว่าอยู่ในสถานะชั่วคราว
19. เราจะลดเวลาการดำเนินการเขียนฐานข้อมูลใน Hibernate ได้อย่างไร?
Hibernate มีคุณสมบัติการตรวจสอบสิ่งสกปรกซึ่งสามารถใช้เพื่อลดเวลาการเขียนฐานข้อมูล คุณสมบัติการตรวจสอบสกปรกของการอัปเดตไฮเบอร์เนตเฉพาะฟิลด์ที่ต้องการการเปลี่ยนแปลงในขณะที่ยังคงรักษาส่วนอื่น ๆ ไว้ไม่เปลี่ยนแปลง
20. การใช้อินเทอร์เฟซการโทรกลับในโหมดไฮเบอร์เนตคืออะไร?
อินเทอร์เฟซการโทรกลับของไฮเบอร์เนตมีประโยชน์ในการรับการแจ้งเตือนเหตุการณ์จากออบเจ็กต์ ตัวอย่างเช่น เมื่อโหลดหรือลบออบเจ็กต์ เหตุการณ์จะถูกสร้างขึ้นและส่งการแจ้งเตือนโดยใช้อินเทอร์เฟซการโทรกลับ
21. เมื่ออินสแตนซ์เข้าสู่สถานะแยกออกในโหมดไฮเบอร์เนต
เมื่ออินสแตนซ์เคยเชื่อมโยงกับบริบทถาวรบางอย่าง (เช่น ตาราง) ก่อนหน้านี้ และไม่ได้เชื่อมโยงอีกต่อไป อินสแตนซ์จะเรียกว่าอยู่ในสถานะแยกออก
22. ORM ทั้งสี่ระดับที่อยู่ในโหมดไฮเบอร์เนตคืออะไร?
ต่อไปนี้เป็นระดับ ORM สี่ระดับในโหมดไฮเบอร์เนต:
- ความสัมพันธ์ที่บริสุทธิ์
- การทำแผนที่วัตถุแสง
- การแมปวัตถุขนาดกลาง
- การแมปวัตถุแบบเต็ม
23. การจัดการธุรกรรมในโหมดไฮเบอร์เนตคืออะไร? มันทำงานอย่างไร?
การจัดการธุรกรรมเป็นกระบวนการจัดการชุดคำสั่งหรือคำสั่ง อยู่ในโหมดจำศีล; การจัดการธุรกรรมทำได้โดยส่วนต่อประสานธุรกรรมดังแสดงในโค้ดด้านล่าง:
Session s = null;
Transaction tr = null;
try {
s = sessionFactory.openSession();
tr = s.beginTransaction();
doTheAction(s);
tr.commit();
} catch (RuntimeException exc) {
tr.rollback();
} finally {
s.close();
}
24. การกำหนดค่าไฮเบอร์เนตทั้งสองวิธีมีอะไรบ้าง?
เราสามารถใช้การกำหนดค่าไฮเบอร์เนตวิธีใดวิธีหนึ่งจากสองวิธีต่อไปนี้:
- การกำหนดค่าตาม XML (โดยใช้ไฟล์ hibernate.cfg.xml)
- การกำหนดค่าทางโปรแกรม ( การใช้โค้ดลอจิก)
25. บริการแคชเริ่มต้นของไฮเบอร์เนตคืออะไร?
Hibernate รองรับบริการแคชหลายอย่าง เช่น EHCache, OSCache, SWARMCache และ TreeCache และบริการแคชเริ่มต้นของ Hibernate คือ EHCache
26. การเชื่อมโยงการแมปสองรายการที่ใช้ในการไฮเบอร์เนตคืออะไร?
อยู่ในโหมดจำศีล; เรามีการเชื่อมโยงการทำแผนที่สองประเภทต่อไปนี้ระหว่างเอนทิตี:
- สมาคมแบบหนึ่งต่อหนึ่ง
- สมาคมหลายต่อหลาย
27. Hibernate QBC API มีประโยชน์อย่างไร
Hibernate Query By Criteria (QBC) API ใช้เพื่อสร้างแบบสอบถามโดยการจัดการออบเจ็กต์เกณฑ์ขณะรันไทม์
28. สามารถดึงวัตถุจากฐานข้อมูลในโหมดไฮเบอร์เนตได้กี่วิธี?
Hibernate มีสี่วิธีในการดึงวัตถุจากฐานข้อมูลดังต่อไปนี้:
- การใช้ HQL
- การใช้ตัวระบุ
- การใช้เกณฑ์ API
- การใช้ SQL มาตรฐาน
29. วิธีการสร้างคีย์หลักโดยใช้ไฮเบอร์เนต?
คีย์หลักของฐานข้อมูลระบุไว้ในไฟล์คอนฟิกูเรชัน hbm.xml ตัวสร้างสามารถใช้เพื่อระบุวิธีการสร้างคีย์หลักในฐานข้อมูล
ในตัวอย่างด้านล่าง deptId ทำหน้าที่เป็นคีย์หลัก:
30. เราจะแนบวัตถุที่แยกออกมาอีกครั้งใน Hibernate ได้อย่างไร?
วัตถุที่ถูกแยกออกและไม่เกี่ยวข้องกับเอนทิตีถาวรใด ๆ อีกต่อไปสามารถแนบใหม่ได้โดยการเรียกเมธอด session.merge() ของคลาสเซสชัน
31. วิธีปิดการใช้งานแคชระดับที่สองของไฮเบอร์เนตมีอะไรบ้าง?
แคชระดับที่สองของไฮเบอร์เนตสามารถปิดใช้งานได้โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:
- โดยการตั้งค่า use_second_level_cache เป็นเท็จ
- โดยใช้ CACHEMODE.IGNORE
- การใช้ผู้ให้บริการแคชเป็น org.hibernate.cache.NoCacheProvider
32. เมตาดาต้า ORM คืออะไร?
การแมปทั้งหมดระหว่างคลาสและตาราง คุณสมบัติและคอลัมน์ ประเภท Java และประเภท SQL ฯลฯ ได้รับการกำหนดไว้ในข้อมูลเมตา ORM
33. อันไหนเป็นแฟคทอรีธุรกรรมเริ่มต้นในโหมดไฮเบอร์เนต?
ด้วย hibernate 3.2 แฟกทอรีธุรกรรมดีฟอลต์คือ JDBCTransactionFactory
34. JMX มีบทบาทอย่างไรในการจำศีล?
แอปพลิเคชัน Java และส่วนประกอบได้รับการจัดการในโหมดไฮเบอร์เนตโดย API มาตรฐานที่เรียกว่า JMX API JMX จัดเตรียมเครื่องมือสำหรับการพัฒนาโซลูชันบนเว็บแบบกระจายที่มีประสิทธิภาพและแข็งแกร่ง
35. เราจะผูกโรงงานเซสชันไฮเบอร์เนตกับ JNDI ได้อย่างไร?
โรงงานเซสชันไฮเบอร์เนตสามารถเชื่อมโยงกับ JNDI ได้โดยทำการเปลี่ยนแปลงการกำหนดค่าในไฟล์ hibernate.cfg
36. สามารถระบุวัตถุใน Hibernate ได้กี่วิธี?
การระบุวัตถุสามารถทำได้ในโหมดไฮเบอร์เนตด้วยสามวิธีต่อไปนี้:
- การใช้เอกลักษณ์ของวัตถุ: การใช้ตัวดำเนินการ ==
- การใช้ความเท่าเทียมกันของวัตถุ: การใช้วิธีเท่ากับ ()
- การใช้เอกลักษณ์ของฐานข้อมูล: สามารถระบุออบเจ็กต์ฐานข้อมูลเชิงสัมพันธ์ได้หากแสดงถึงแถวเดียวกัน
37. กลยุทธ์การดึงข้อมูลของโหมดไฮเบอร์เนตที่แตกต่างกันมีอะไรบ้าง?
กลยุทธ์การดึงข้อมูลต่อไปนี้มีอยู่ในโหมดไฮเบอร์เนต:
- เข้าร่วมการดึงข้อมูล
- การดึงข้อมูลเป็นชุด
- เลือก กำลังดึงข้อมูล
- เลือกย่อยการดึงข้อมูล
38. การแมปวัตถุ Java กับตารางฐานข้อมูลทำอย่างไร?
ในการแมปวัตถุ Java กับตารางฐานข้อมูล เราจำเป็นต้องมีชื่อคุณสมบัติ Java bean เหมือนกับชื่อคอลัมน์ของตารางฐานข้อมูล จากนั้นการแมปจะถูกจัดเตรียมไว้ในไฟล์ hbm.xml ตามที่ระบุด้านล่าง:
39. คุณสมบัติที่ได้รับในไฮเบอร์เนตคืออะไร?
คุณสมบัติที่ได้รับคือคุณสมบัติที่ไม่ได้แมปกับคอลัมน์ใดๆ ของตารางฐานข้อมูล คุณสมบัติดังกล่าวได้รับการคำนวณ ณ รันไทม์โดยการประเมินนิพจน์ใดๆ
40. Named SQL Query ในโหมดไฮเบอร์เนตหมายถึงอะไร และใช้งานอย่างไร?
แบบสอบถาม SQL ที่มีชื่อคือแบบสอบถามที่กำหนดไว้ในไฟล์การแมปและถูกเรียกตามที่จำเป็นทุกที่
ตัวอย่างเช่น เราสามารถเขียนแบบสอบถาม SQL ในไฟล์การแมป XML ของเราได้ดังนี้:
จากนั้นแบบสอบถามนี้สามารถเรียกได้ดังนี้:
List students = session.getNamedQuery("studentdetails")
.setString("TomBrady", name)
.setMaxResults(50)
.list();
41. วิธีการ load() และ get() ในโหมดไฮเบอร์เนตแตกต่างกันอย่างไร?
วิธีการ Load() ส่งผลให้เกิดข้อยกเว้นหากไม่พบบันทึกที่ต้องการในฐานข้อมูล ในขณะที่วิธีการ get() จะส่งคืนค่า null เมื่อไม่พบบันทึกเทียบกับ id ในฐานข้อมูล
ดังนั้น ตามหลักการแล้ว เราควรใช้เมธอด Load() เฉพาะเมื่อเราแน่ใจว่ามีบันทึกเทียบกับ id เท่านั้น
42. คุณสมบัติเวอร์ชันในการไฮเบอร์เนตมีประโยชน์อย่างไร?
คุณสมบัติเวอร์ชันใช้ในการไฮเบอร์เนตเพื่อทราบว่าวัตถุอยู่ในสถานะชั่วคราวหรืออยู่ในสถานะแยกออก
43. การเขียนโปรแกรมเชิงคุณลักษณะคืออะไร?
ในการเขียนโปรแกรมเชิงแอตทริบิวต์ นักพัฒนาสามารถเพิ่มข้อมูล Meta (คุณลักษณะ) ในซอร์สโค้ด Java เพื่อเพิ่มความสำคัญให้กับโค้ดมากขึ้น สำหรับ Java (ไฮเบอร์เนต) การเขียนโปรแกรมเชิงคุณลักษณะจะถูกเปิดใช้งานโดยเอ็นจิ้นชื่อ XDoclet
44. session.lock() มีประโยชน์อย่างไรในการจำศีล?
วิธีการ session.lock() ของคลาสเซสชันใช้เพื่อแนบวัตถุที่ถูกแยกออกก่อนหน้านี้อีกครั้ง วิธีการแนบใหม่นี้จะไม่ตรวจสอบการซิงโครไนซ์ข้อมูลใดๆ ในฐานข้อมูลในขณะที่แนบออบเจ็กต์อีกครั้ง และด้วยเหตุนี้อาจทำให้ขาดการซิงโครไนซ์ข้อมูล
45. ไฮเบอร์เนตรองรับความหลากหลายหรือไม่?
ใช่ ไฮเบอร์เนตรองรับความหลากหลายอย่างสมบูรณ์ การสืบค้นแบบ Polymorphism และการเชื่อมโยงแบบ Polymorphism ได้รับการสนับสนุนในกลยุทธ์การแม็พทั้งหมดของ Hibernate
46. โมเดลการสืบทอดทั้งสามแบบของการจำศีลคืออะไร?
Hibernate มีโมเดลการสืบทอดสามแบบต่อไปนี้:
- ตารางต่อชั้นคอนกรีต
- ตารางตามลำดับชั้นของชั้นเรียน
- ตารางต่อคลาสย่อย
47. เราจะแมปคลาสต่างๆ ที่ไม่เปลี่ยนรูปได้อย่างไร?
หากเราไม่ต้องการให้แอปพลิเคชันอัปเดตหรือลบวัตถุของคลาสในโหมดไฮเบอร์เนต เราสามารถทำให้คลาสไม่เปลี่ยนรูปได้โดยตั้งค่า mutable=false
48. โฟลว์ไฮเบอร์เนตทั่วไปที่ใช้ RDBMS คืออะไร?
โฟลว์ไฮเบอร์เนตทั่วไปที่เกี่ยวข้องกับ RDBMS เป็นดังนี้:
- โหลดไฟล์การกำหนดค่าและสร้างอ็อบเจ็กต์ของคลาสการกำหนดค่า
- ใช้วัตถุการกำหนดค่าสร้างวัตถุ sessionFactory
- จาก sessionFactory รับหนึ่งเซสชัน
- สร้างแบบสอบถาม HQL
- ดำเนินการค้นหา HQL และรับผลลัพธ์ ผลลัพธ์จะอยู่ในรูปแบบของรายการ
49. การทำแผนที่วัตถุแบบแสงคืออะไร
Light Object Mapping เป็นหนึ่งในระดับคุณภาพ ORM ซึ่งเอนทิตีทั้งหมดจะแสดงเป็นคลาสและแมปด้วยตนเอง
50. อะไรคือความแตกต่างระหว่างการเชื่อมโยงที่มีการจัดการและการเชื่อมโยงแบบไฮเบอร์เนต?
การเชื่อมโยงที่ได้รับการจัดการเกี่ยวข้องกับความคงอยู่ของการจัดการคอนเทนเนอร์และเป็นแบบสองทิศทาง ในขณะที่การเชื่อมโยงแบบไฮเบอร์เนตนั้นเป็นแบบทิศทางเดียว
คำถามสัมภาษณ์เหล่านี้จะช่วยในวีว่าของคุณ (วาจา)
คอลเลกชันที่ดีของ qns...
อธิบายได้เยี่ยมมาก ,,,,
คุณสามารถเพิ่มคำถามด้านล่างได้เช่นกัน
เราจะเรียกใช้ขั้นตอนการจัดเก็บในโหมดไฮเบอร์เนตได้อย่างไร?
อะไรสั่งคอลเลกชันและเรียงลำดับคอลเลกชัน
สถานะถาวรคืออะไร
มีการกำหนดค่าการตรวจสอบสกปรกเพียงใด
กำหนดค่าอินเทอร์เฟซการโทรกลับ
วิธีทำให้วัตถุแยกออกจากกัน
จะเกิดอะไรขึ้นถ้าฉันแยกวัตถุชั่วคราวออก
อธิบายแต่ละระดับ ORM ใน Hibernate
วิธีเปิด/ปิดการใช้งานแคชระดับที่หนึ่งและสอง
เราจะผูกโรงงานเซสชันไฮเบอร์เนตกับ JNDI ได้อย่างไร
อะไรคือความแตกต่างระหว่างเมธอด load() และ get() ในไฮเบอร์เนต?
ความแตกต่างระหว่าง session.lock() และ session.merge()
วิธีการแมปคลาสว่าไม่เปลี่ยนรูปและเพราะเหตุใด
เราจะใช้อินเทอร์เฟซแบบกำหนดเองใหม่เพื่อปรับปรุงการทำงานของอินเทอร์เฟซในตัวของไฮเบอร์เนตได้อย่างไร
สวัสดีผู้ดูแลระบบ จะเกิดผลดีหากคุณเพิ่มคำถามนี้หรือคำถาม mcq ที่สำคัญกว่าเช่นคำถามสำหรับการสอบแข่งขัน