ความแตกต่างระหว่าง JPA และไฮเบอร์เนต

ความแตกต่างระหว่าง JPA และไฮเบอร์เนต
ความแตกต่างระหว่าง JPA และไฮเบอร์เนต

วีดีโอ: ความแตกต่างระหว่าง JPA และไฮเบอร์เนต

วีดีโอ: ความแตกต่างระหว่าง JPA และไฮเบอร์เนต
วีดีโอ: คำถามโลกแตก! iOS​ vs Android 2024, กรกฎาคม
Anonim

JPA vs ไฮเบอร์เนต

แอปพลิเคชันระดับองค์กรเกือบทั้งหมดจำเป็นต้องเข้าถึงฐานข้อมูลเชิงสัมพันธ์เป็นประจำ แต่ปัญหาที่ต้องเผชิญกับเทคโนโลยีก่อนหน้านี้ (เช่น JDBC) คืออิมพีแดนซ์ที่ไม่ตรงกัน (ความแตกต่างระหว่างเทคโนโลยีเชิงวัตถุและเทคโนโลยีเชิงสัมพันธ์) วิธีแก้ปัญหาสำหรับปัญหานี้ได้รับการแนะนำผ่านการแนะนำเลเยอร์นามธรรมที่เรียกว่าเลเยอร์การคงอยู่ ซึ่งสรุปการเข้าถึงฐานข้อมูลจากตรรกะทางธุรกิจ JPA (Java Persistence API) เป็นเฟรมเวิร์กเฉพาะสำหรับการจัดการข้อมูลเชิงสัมพันธ์ (โดยใช้เลเยอร์การคงอยู่) ในแอปพลิเคชัน Java มีการใช้งาน JPA ของผู้จำหน่ายจำนวนมากที่ใช้ภายในชุมชนนักพัฒนา Javaไฮเบอร์เนตเป็นการนำ 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 ธันวาคม 2552 JPA แทนที่ถั่วเอนทิตี EJB 2.0 และ EJB 1.1 (ซึ่งถูกวิพากษ์วิจารณ์อย่างหนักว่าเป็นกลุ่มนักพัฒนา Java รุ่นหนา) แม้ว่าเอนทิตีบีน (ใน EJB) จะจัดเตรียมออบเจ็กต์การคงอยู่ นักพัฒนาหลายคนเคยชินกับการใช้อ็อบเจ็กต์ที่ค่อนข้างเบาซึ่งนำเสนอโดย DAO (Data Access Objects) และเฟรมเวิร์กอื่นที่คล้ายคลึงกันแทน ด้วยเหตุนี้ จึงมีการแนะนำ JPA และได้รวบรวมคุณลักษณะที่ประณีตมากมายของเฟรมเวิร์กที่กล่าวถึงข้างต้น

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

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

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

JPA กับ Hibernate ต่างกันอย่างไร

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

แนะนำ: