20 คำถามและคำตอบในการสัมภาษณ์จำศีลที่พบบ่อยที่สุด [สำหรับ Freshers & ผู้มีประสบการณ์]

เผยแพร่แล้ว: 2020-12-31

เป็นเวลานานแล้วที่ Java ครองตำแหน่งสูงสุดในรายการภาษาโปรแกรมยอดนิยม โดยธรรมชาติแล้ว เนื่องจากเป็นภาษาการเขียนโปรแกรมที่มีลำดับความสำคัญสูงเป็นที่ต้องการของนักพัฒนาทั่วโลก Java จึงมาพร้อมกับชุดเครื่องมือ ไลบรารี และเฟรมเวิร์กจำนวนมาก ในบทความนี้ เราจะพูดถึง Java framework ยอดนิยม Hibernate

ใครก็ตามที่เคยทำงานหรือทำงานกับ Java ต่างก็รู้ดีถึงไฮเบอร์เนตและพลังของมัน อย่างไรก็ตาม ให้เราแบ่งมันออกสำหรับผู้ที่เพิ่งเจอชื่อนี้ – ไฮเบอร์เนต

สารบัญ

ไฮเบอร์เนตคืออะไร?

Hibernate เป็นเครื่องมือ ORM (object-relational mapping ) ที่ออกแบบมาสำหรับ Java โดยเฉพาะ กล่าวอีกนัยหนึ่ง มันมีกรอบงานเพื่อช่วยแมปโมเดลเชิงวัตถุกับฐานข้อมูลเชิงสัมพันธ์ ไฮเบอร์เนตมุ่งเน้นไปที่การแมปจากคลาส Java กับตารางฐานข้อมูลเป็นหลัก และการแมปจากชนิดข้อมูล Java กับชนิด ข้อมูล SQL

ไฮเบอร์เนตยังขยายบริการการสืบค้นข้อมูลและการดึงข้อมูล มันเขียนด้วย Java และเป็นแบบ JVM Hibernate เสนอการใช้งานอ้างอิงของ Java Persistence API ซึ่งทำให้เป็นตัวเลือกที่ยอดเยี่ยมสำหรับ ORM (Object Relational Mapping) เราสามารถใช้ API การคงอยู่ของ Hibernate สำหรับการดำเนินการ CRUD

เดิมที Hibernate ได้รับการออกแบบมาเพื่อใช้เป็นทางเลือกที่ง่ายกว่าและดีกว่าของ EJB2 (Enterprise Java Beans เวอร์ชัน 2) วันนี้ Hibernate เป็นหนึ่งในเครื่องมือ ORM ที่ใช้กันอย่างแพร่หลายมากที่สุดสำหรับแอปพลิเคชัน Java

มันถูกใช้อย่างกว้างขวางสำหรับการพัฒนาแอพพลิเคชั่นระดับองค์กรที่ใช้ Java สำหรับการทำงานของฐานข้อมูล นอกจากนี้ Hibernate Persistence API ยังยอดเยี่ยมสำหรับการดำเนินการ CRUD

เมื่อคุณมีความรู้พื้นฐานเกี่ยวกับไฮเบอร์เนตแล้ว มาทำความรู้จักเครื่องมือ ORM นี้ให้ดีขึ้นอีกนิดด้วยคำถามสัมภาษณ์ X Hibernate!

ลงทะเบียนเรียน หลักสูตรการพัฒนาซอฟต์แวร์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

คำถามและคำตอบสัมภาษณ์จำศีล

1. ORM คืออะไร?

ORM (Object Relational Mapping) หมายถึงเทคนิคการทำแผนที่วัตถุด้วยข้อมูลที่จัดเก็บไว้ในฐานข้อมูล จุดมุ่งหมายของ ORM คือการลดความซับซ้อนในการสร้างข้อมูล การเข้าถึงข้อมูล และการจัดการข้อมูล

2.JPA คืออะไร?

Java Persistence API (JPA) เป็นข้อกำหนดที่กำหนดมาตรฐานและฟังก์ชันการทำงานให้กับเครื่องมือ ORM คุณสามารถเข้าถึงคลาส JPA และอินเทอร์เฟซจาก แพ็คเกจ javax.persistence ข้อกำหนด JPA ทั้งหมดถูกกำหนดโดยใช้คำอธิบายประกอบในแพ็คเกจ javax.persistence ข้อดีของการใช้คำอธิบายประกอบ JPA คืออนุญาตให้คุณเขียนโค้ดอิสระในการใช้งาน

3.คำอธิบายประกอบ JPA สำคัญที่ใช้สำหรับการทำแผนที่ไฮเบอร์เนตคืออะไร

ไฮเบอร์เนตรองรับคำอธิบายประกอบ JPA พร้อมกับคำอธิบายประกอบอื่นๆ มากมายที่คุณสามารถเข้าถึงได้ผ่านแพ็คเกจ org.hibernate.annotations ต่อไปนี้คือคำอธิบายประกอบ JPA ที่สำคัญที่สุดเจ็ดรายการ:

javax.persistence.Entity – ใช้ร่วมกับคลาสโมเดลเพื่อประกาศเป็นเอนทิตีบีน

javax.persistence.Table – ใช้กับเอนทิตีบีนเพื่อกำหนดชื่อตารางที่สอดคล้องกันในฐานข้อมูล

javax.persistence.Access – ใช้เพื่อระบุประเภทการเข้าถึง ฟิลด์ หรือคุณสมบัติ ค่าเริ่มต้นสำหรับคำอธิบายประกอบนี้คือฟิลด์

javax.persistence.Id – กำหนดคีย์หลักในเอนทิตีบีน

javax.persistence.EmbeddedId – ใช้เพื่อระบุคีย์หลักแบบรวมในเอนทิตีบีน

javax.persistence.Column – ระบุชื่อคอลัมน์ในตารางฐานข้อมูล

javax.persistence.GeneratedValue – กำหนดกลยุทธ์ที่จำเป็นสำหรับการสร้างคีย์หลัก

4.กำหนด HQL

HQL ย่อมาจาก Hibernate Query Language เป็นภาษาคิวรีเชิงวัตถุที่ไม่ขึ้นกับฐานข้อมูล

5. คุณจะทำแผนที่ในโหมดไฮเบอร์เนตได้อย่างไร?

คุณลักษณะการแมปการเชื่อมโยงของ Hibernate ช่วยอำนวยความสะดวกในการทำแผนที่โดยสนับสนุนการเชื่อมโยงมาตรฐานสี่กลุ่ม เช่นเดียวกับแบบจำลองฐานข้อมูลเชิงสัมพันธ์:

  • ความสัมพันธ์แบบตัวต่อตัว
  • หนึ่งต่อหลายสมาคม
  • สมาคมหลายต่อหนึ่ง
  • สมาคมหลายต่อหลายคน

แต่ละการเชื่อมโยงเหล่านี้สามารถแมปเป็นการเชื่อมโยงแบบทิศทางเดียวหรือแบบสองทิศทาง

6.ตั้งชื่ออินเทอร์เฟซ/ส่วนประกอบหลักของไฮเบอร์เนต

ไฮเบอร์เนตมีอินเทอร์เฟซหลัก 6 แบบ ได้แก่ การกำหนดค่า, SessionFactory, เซสชัน, การสืบค้น, เกณฑ์ และธุรกรรม

7. คุณสามารถสร้างแบบสอบถาม SQL ในโหมดไฮเบอร์เนตได้หรือไม่?

ได้ คุณสามารถสร้างแบบสอบถาม SQL ในโหมดไฮเบอร์เนตได้ ในการสร้างแบบสอบถาม SQL คุณต้องใช้ไวยากรณ์ต่อไปนี้:

Session.createSQLQuery

8.ไฟล์การกำหนดค่าไฮเบอร์เนตคืออะไร?

ไฟล์การกำหนดค่าไฮเบอร์เนตเก็บการกำหนดค่าเฉพาะฐานข้อมูล ใช้เพื่อเริ่มต้นอินเทอร์เฟซของ SessionFactory ไฟล์นี้ยังมีข้อมูลที่เกี่ยวข้องอื่นๆ เช่น ข้อมูลภาษาถิ่น ซึ่งช่วยให้ไฮเบอร์เนตทราบประเภทฐานข้อมูลและรายละเอียดของไฟล์การแมป/คลาส

9. คลาสถาวรคืออะไร?

ใน Hibernate คลาสที่มีอ็อบเจ็กต์และอินสแตนซ์ถูกจัดเก็บไว้ในคลาสฐานข้อมูลจะเรียกว่าคลาสถาวร

10.กำหนดเซสชัน

อินเทอร์เฟซของเซสชันอยู่ระหว่างไฮเบอร์เนตและเลเยอร์แอปพลิเคชัน Java ส่วนใหญ่จะใช้สำหรับการดำเนินการกับฐานข้อมูล เซสชันช่วยสร้างและรักษาการเชื่อมต่อระหว่างแอปไฮเบอร์เนตกับฐานข้อมูล มีวิธีการต่างๆ ในการสร้าง อ่าน อัปเดต และลบการดำเนินการสำหรับอ็อบเจ็กต์ถาวร

นอกจากนี้ Session ยังทำหน้าที่เหมือนโรงงานของ Query, Criteria และ Transaction ซึ่งหมายความว่าจะขยายวิธีการจากโรงงานเพื่อส่งคืนอินสแตนซ์เหล่านี้ คุณสามารถใช้วัตถุเซสชันเพื่อสร้างเกณฑ์และดำเนินการค้นหา HQL และแบบสอบถามดั้งเดิมของ SQL

11.กำหนด SessionFactory

ใน Hibernate SessionFactory เป็นคลาสโรงงานที่ใช้เพื่อเข้าถึงวัตถุของเซสชัน มันอ่านพารามิเตอร์การกำหนดค่าไฮเบอร์เนตและเชื่อมต่อกับฐานข้อมูลเพื่อดึงวัตถุเซสชัน SessionFactory เป็นโรงงานของเซสชันโดยพื้นฐานแล้วและมีอินสแตนซ์ของเซสชัน

เมื่อสร้าง SessionFactory แล้ว สถานะภายในจะได้รับการแก้ไข ทำให้เปลี่ยนไม่ได้ สถานะภายในของ SessionFactory มีข้อมูลเมตาที่สมบูรณ์ของ Object/Relational Mapping

12. แยกแยะระหว่าง ไฟล์การกำหนดค่าไฮเบอร์เนตและไฟล์การแมปไฮเบอร์เนต

ไฟล์การกำหนดค่าไฮเบอร์เนตรวมถึงการกำหนดค่าเฉพาะฐานข้อมูลและข้อมูลภาษาถิ่น ใช้เพื่อเริ่มต้น SessionFactory คุณสามารถเข้าถึงข้อมูลประจำตัวของฐานข้อมูลหรือข้อมูลทรัพยากร JNDI จากไฟล์ XML การกำหนดค่าไฮเบอร์เนต

ในทางกลับกัน ไฟล์การแมปไฮเบอร์เนตใช้เพื่อกำหนดการแมปคอลัมน์ตารางฐานข้อมูลและฟิลด์เอนทิตีบีน ไฟล์การแมปเป็นแกนหลักของทุกแอปไฮเบอร์เนต ประกอบด้วยการแม็พจากชื่อคลาส POJO กับชื่อตาราง และชื่อตัวแปรคลาส POJO กับชื่อคอลัมน์ของตาราง

13.POJO คืออะไร?

POJO เป็นตัวย่อสำหรับออบเจกต์ Java แบบเก่า โดยพื้นฐานแล้ว POJO คือ java bean ที่ออกแบบด้วยเมธอด getter และ setter มาตรฐานสำหรับคุณสมบัติแต่ละรายการ ข้อดีของการใช้ POJO แทนคลาส Java คือคุณสามารถเขียนโค้ดที่สะอาด แม่นยำ และมีประสิทธิภาพ

14. ตั้งชื่อส่วนประกอบหลักของออบเจ็กต์การกำหนดค่าไฮเบอร์เนต

ออบเจ็กต์การกำหนดค่าไฮเบอร์เนตมีส่วนประกอบหลักสองส่วน

  1. การเชื่อมต่อฐานข้อมูลซึ่งจัดการโดยไฟล์การกำหนดค่าตั้งแต่หนึ่งไฟล์ขึ้นไป
  2. การตั้งค่าการแมปคลาสซึ่งใช้เพื่อสร้างการเชื่อมต่อระหว่างคลาส Java และตารางฐานข้อมูล

15. ภาษาถิ่นไฮเบอร์เนตคืออะไร?

Hibernate Dialect ระบุประเภทของฐานข้อมูลที่คุณต้องการใช้ ช่วยให้ไฮเบอร์เนตทราบข้อมูลนี้ล่วงหน้าเพื่อสร้างคำสั่ง SQL ที่เหมาะสมซึ่งเหมาะสมกับประเภทฐานข้อมูลที่คุณต้องการ/ระบุมากที่สุด

16. กำหนด "ไฮเบอร์เนตแคช"

การแคชไฮเบอร์เนตเป็นกระบวนการสืบค้นข้อมูลเพื่อเพิ่มความเร็วและประสิทธิภาพของแอปพลิเคชันไฮเบอร์เนต เป้าหมายคือเพื่อลดจำนวนการสืบค้นฐานข้อมูล ส่งผลให้เวลาปริมาณงานลดลง

EHCache เป็นคุณลักษณะแคชเริ่มต้นของไฮเบอร์เนต

17.แคชระดับแรกและระดับที่สองคืออะไร

ในโหมดไฮเบอร์เนต แคชระดับแรกจะอ้างอิงถึงแคชของเซสชัน เป็นแคชบังคับที่คำขอทั้งหมดต้องผ่าน แคชที่สองคือแคชทางเลือกที่แคชวัตถุในเซสชันต่างๆ

คุณสามารถกำหนดค่าแคชระดับที่สองตามการรวบรวมล่วงหน้าและสำหรับแต่ละคลาส ตามกฎทั่วไป แคชระดับแรกต้องได้รับการพิจารณาก่อนที่คุณจะพยายามค้นหาวัตถุในแคชระดับที่สอง

18. อธิบายขั้นตอนต่างๆ ของ object/entity bean

อินสแตนซ์อ็อบเจ็กต์/เอนทิตี bean มักจะมีอยู่ในหนึ่งในสามขั้นตอนต่อไปนี้:

  • ชั่วคราว – ในขั้นตอนนี้ วัตถุจะไม่คงอยู่หรือเชื่อมโยงกับเซสชันใดๆ คุณสามารถแปลงอินสแตนซ์ชั่วคราวเป็นแบบถาวรได้โดยใช้ฟังก์ชันบันทึก (), การคงอยู่ () หรือ saveOrUpdate() หากต้องการเปลี่ยนอินสแตนซ์ถาวรกลับไปเป็นแบบชั่วคราว คุณสามารถใช้คำสั่ง delete()
  • ถาวร – วัตถุเข้าสู่สถานะคงอยู่เมื่อเชื่อมโยงกับเซสชันที่ไม่ซ้ำ อินสแตนซ์ทั้งหมดที่ส่งคืนโดยฟังก์ชัน get() หรือ load() อยู่ในสถานะคงอยู่
  • แยกออก – เมื่อวัตถุถาวรไม่เชื่อมโยงกับเซสชันใด ๆ วัตถุนั้นจะถึงสถานะแยกออก คุณสามารถแปลงอินสแตนซ์ที่แยกออกมาเป็นแบบถาวรได้โดยใช้ฟังก์ชัน update(), saveOrUpdate(), lock() หรือทำซ้ำ ()

19. จุดประสงค์ของการตรวจสอบสกปรกในโหมดไฮเบอร์เนตมีจุดประสงค์อะไร?

คุณลักษณะการตรวจสอบสกปรกอัตโนมัติของไฮเบอร์เนตจะเรียกคำสั่งอัปเดตโดยอัตโนมัติบนอ็อบเจ็กต์ที่แก้ไขในธุรกรรม ซึ่งช่วยให้นักพัฒนาหลีกเลี่ยงการดำเนินการเขียนที่ใช้เวลานาน

การตรวจสอบแบบสกปรกจะแก้ไข/อัปเดตเฉพาะช่องที่ต้องดำเนินการในขณะที่รักษาช่องอื่นๆ ให้ไม่ถูกแตะต้อง โดยรวมแล้วจะลดเวลาในการเขียนฐานข้อมูล

20. กำหนด “การจัดการธุรกรรม”

การจัดการธุรกรรมเป็นคุณสมบัติของกรอบงานสปริง โดยพื้นฐานแล้วเป็นกระบวนการในการจัดการชุดคำสั่ง/คำสั่ง ในโหมดไฮเบอร์เนต อินเทอร์เฟซธุรกรรมดำเนินการจัดการธุรกรรมโดยคงความเป็นนามธรรมจากการใช้งานธุรกรรม (JTA, JDBC) คุณสามารถเริ่มต้นธุรกรรมได้โดยการเรียก เมธอด session.beginTransaction()

อ่านเพิ่มเติม: คำถามและคำตอบสัมภาษณ์ Java

บทสรุป

เพื่อสรุป แม้ว่าคำถามสัมภาษณ์จำศีลทั้ง 20 ข้อนี้จะขีดข่วนพื้นผิวของหัวข้อที่เป็นปัญหา เราหวังว่าสิ่งนี้จะช่วยคุณทำลายน้ำแข็งด้วย Hibernate และเจาะลึกลงไปในนั้น!

เราขอให้คุณเริ่มต้นอาชีพใน Java อย่างดีที่สุด!

ลงจอดบนงานในฝันของคุณ

สมัครเลยตอนนี้สำหรับปริญญาโทด้านวิศวกรรมซอฟต์แวร์