ความแตกต่างระหว่าง JPA และ Hibernate

Anonim

JPA กับ Hibernate

เกือบทุกแอปพลิเคชันขององค์กรจำเป็นต้องเข้าถึงฐานข้อมูลเชิงสัมพันธ์อย่างสม่ำเสมอ แต่ปัญหาที่ต้องเผชิญกับเทคโนโลยีก่อนหน้านี้ (เช่น JDBC) เป็นความไม่สอดคล้องของความต้านทาน (ความแตกต่างระหว่างเทคโนโลยีเชิงวัตถุและเชิงสัมพันธ์) ทางออกสำหรับปัญหานี้ได้ถูกนำมาใช้โดยการแนะนำชั้นนามธรรมที่เรียกว่า Persistence layer ซึ่ง encapsulates การเข้าถึงฐานข้อมูลจากตรรกะทางธุรกิจ JPA (Java Persistence API) เป็นเฟรมเวิร์กที่มีไว้สำหรับการจัดการข้อมูลเชิงสัมพันธ์ (โดยใช้ชั้นการติดตา) ในแอ็พพลิเคชัน Java มี implementations ของผู้จัดจำหน่ายของ JPA ที่ใช้ภายในชุมชนนักพัฒนาซอฟต์แวร์ Java Hibernate เป็นโปรแกรมที่ได้รับความนิยมมากที่สุดใน JPA (DataNucleus, EclipseLink และ OpenJPA เป็นอีกบางส่วน) JPA รุ่นล่าสุด (JPA 2 0) ได้รับการสนับสนุนโดย Hibernate 3. 5 ซึ่งได้รับการเผยแพร่ในเดือนมีนาคม 2010

JPA คืออะไร?

JPA เป็นกรอบการจัดการข้อมูลเชิงสัมพันธ์สำหรับ Java สามารถใช้กับแอพพลิเคชันที่ใช้ JSE (Java Platform, Standard Edition) หรือ JEE (Java Platform, Enterprise Edition) รุ่นปัจจุบันคือ JPA 2 0 ซึ่งเผยแพร่ในวันที่ 10 ธ.ค. 2009 JPA ได้แทนที่ EJB 2. 0 และ EJB 1. 1 เอนทิตี beans (ซึ่งถูกวิพากษ์วิจารณ์ว่าเป็น heavyweight อย่างหนักโดยชุมชนนักพัฒนา Java) แม้ว่าเอนทิตีถั่ว (ใน EJB) ให้วัตถุที่มีอยู่จริงนักพัฒนาจำนวนมากถูกนำมาใช้เพื่อใช้วัตถุที่มีน้ำหนักเบาที่นำเสนอโดย DAO (Data Access Objects) และกรอบที่คล้ายคลึงกันอื่น ๆ แทน เป็นผลให้ JPA ถูกนำมาใช้และได้รวบรวมคุณสมบัติที่ละเอียดอ่อนมากมายของกรอบดังกล่าวข้างต้น

ความคงอยู่ตามที่อธิบายไว้ใน JPA ครอบคลุม API (กำหนดไว้ใน javax persistence), JPQL (Java Platform, Enterprise Edition) และเมตาดาต้าที่จำเป็นสำหรับอ็อบเจ็กต์เชิงสัมพันธ์ สถานะของเอนทิตีที่มีอยู่โดยปกติแล้วจะยังอยู่ในตารางต่อไป อินสแตนซ์ของเอนทิตีสอดคล้องกับแถวของตารางของฐานข้อมูลเชิงสัมพันธ์ ข้อมูลเมตาถูกใช้เพื่อแสดงความสัมพันธ์ระหว่างเอนทิตี คำอธิบายประกอบหรือไฟล์ XML descriptor แยกต่างหาก (ใช้งานร่วมกับแอ็พพลิเคชัน) จะถูกใช้เพื่อระบุข้อมูลเมตาในคลาสเอนทิตี ใช้ JPQL ซึ่งคล้ายกับข้อความค้นหา SQL เพื่อค้นหาเอนทิตีที่เก็บไว้

Hibernate คืออะไร?

Hibernate เป็นกรอบที่สามารถใช้สำหรับการทำแผนที่เชิงวัตถุเกี่ยวกับภาษาการเขียนโปรแกรม Java โดยเฉพาะอย่างยิ่งเป็นห้องสมุด ORM (object-relational mapping) ที่สามารถใช้ในการแม็ปโมเดลเชิงวัตถุกับโมเดลเชิงสัมพันธ์แบบเดิมได้ ในแง่ง่ายๆจะสร้างการแมประหว่างคลาส Java และตารางในฐานข้อมูลเชิงสัมพันธ์ระหว่างประเภทข้อมูล Java กับ SQL Hibernate สามารถใช้สำหรับการสอบถามและเรียกข้อมูลด้วยการสร้างการเรียก SQLดังนั้นโปรแกรมเมอร์จะโล่งใจจากการจัดการด้วยตนเองของชุดผลลัพธ์และการแปลงวัตถุ ไฮเบอร์เนตถูกปล่อยออกมาเป็นกรอบแหล่งข้อมูลฟรีและโอเพ่นซอร์สที่แจกจ่ายภายใต้ใบอนุญาตของ GNU การใช้งาน JPA API มีให้ใน Hibernate 3 และเวอร์ชันที่ใหม่กว่า Gavin King เป็นผู้ก่อตั้ง Hibernate

อะไรคือความแตกต่างระหว่าง JPA และ Hibernate?

JPA เป็นกรอบการจัดการข้อมูลเชิงสัมพันธ์ในแอ็พพลิเคชัน Java ขณะที่ Hibernate คือการใช้งาน JPA ที่เฉพาะเจาะจง (ดังนั้น JPA และ Hibernate จึงไม่สามารถเปรียบเทียบได้โดยตรง) กล่าวอีกนัยหนึ่งไฮเบอร์เนตเป็นหนึ่งในกรอบที่ได้รับความนิยมมากที่สุดในการนำ JPA Hibernate ใช้ JPA ผ่านไลบรารีคำอธิบาย Hibernate และ EntityManager ที่ใช้งานอยู่ด้านบนของไลบรารี Hibernate Core EntityManager และคำอธิบายประกอบทั้งสองทำงานตามวงจรชีวิตของ Hibernate JPA รุ่นล่าสุด (JPA 2 0) ได้รับการสนับสนุนโดย Hibernate 3 อย่างสมบูรณ์ 5. JPA มีประโยชน์ในการมีอินเทอร์เฟซที่เป็นมาตรฐานดังนั้นชุมชนนักพัฒนาซอฟต์แวร์จะคุ้นเคยกับ Hibernate มากกว่า ในอีกด้านหนึ่ง APIs Hibernate แบบพื้นเมืองถือได้ว่ามีประสิทธิภาพมากขึ้นเนื่องจากคุณลักษณะนี้มีลักษณะเป็นส่วนขยายของ JPA