JPA และ JDBC แตกต่างกันอย่างไร


ตอบ 1:

JDBC เป็นเครื่องมือมาตรฐานสำหรับการเชื่อมต่อกับฐานข้อมูลโดยตรงและรัน SQL กับมันตัวอย่างเช่นเลือก * จาก TableName เป็นต้นชุดข้อมูลสามารถส่งคืนได้ซึ่งผู้ใช้สามารถจัดการได้ในแอปของเขาและเขาสามารถทำสิ่งต่าง ๆ เช่นอัพเดตลบ แทรกโพรซีเดอร์ ฯลฯ เป็นหนึ่งในเทคโนโลยีพื้นฐานที่อยู่เบื้องหลัง Java DBA ส่วนใหญ่ (รวมถึงผู้ให้บริการ JPA)

ปัญหาที่สำคัญอย่างหนึ่งของแอพพลิเคชั่น JDBC แบบดั้งเดิมคือผู้ใช้มักจะมีรหัสเส็งเคร็งที่มีการผสมตรรกะกับ SQL, การทำแผนที่จำนวนมากระหว่างชุดข้อมูลและวัตถุเกิดขึ้น ฯลฯ

JPA เป็นเครื่องมืออย่างเป็นทางการสำหรับการทำแผนที่วัตถุสัมพันธ์ JPA เป็นเทคโนโลยีที่ช่วยให้ผู้ใช้แผนที่ระหว่างวัตถุในตารางรหัสและฐานข้อมูล JPA สามารถ "ซ่อน" SQL จากผู้พัฒนาเพื่อให้สิ่งที่พวกเขาจัดการภายในคลาส Java และผู้ให้บริการช่วยให้คุณสามารถบันทึกพวกเขาและโหลดพวกเขาจากระยะไกล ส่วนใหญ่ไฟล์การแมป XML หรือคำอธิบายประกอบบน setters และ getters สามารถใช้เพื่อบอกผู้ให้บริการ JPA เขตข้อมูลใดบนวัตถุวัตถุผู้ใช้แมปกับเขตข้อมูลใดในฐานข้อมูล hibernate เป็นผู้ให้บริการ JPA ที่ได้รับความนิยมมากที่สุด

ตัวอย่างอื่น ๆ ได้แก่ OpenJPA, toplink เป็นต้น

ไฮเบอร์เนตและผู้ให้บริการยอดนิยมอื่น ๆ สำหรับ JPA เขียน SQL และใช้ JDBC เพื่ออ่านและเขียนจากและไปยังฐานข้อมูล

ขอขอบคุณ.

ถ้าคุณชอบคำตอบของฉันแล้วโหวตขึ้น


ตอบ 2:

มันซับซ้อนเล็กน้อยที่จะเข้าใจความแตกต่างของทั้งคู่ถ้าคุณเป็นมือใหม่ ฉันคิดว่าคุณควรเริ่มต้นด้วยการเข้าใจความแตกต่างระหว่าง JDBC และไฮเบอร์เนตก่อน ฉันหวังว่าคุณจะรู้ว่า JDBC คืออะไรยังคงเป็นคำอธิบาย breif: JDBC ย่อมาจากการเชื่อมต่อฐานข้อมูล Java JDBC เป็น Java API เพื่อเชื่อมต่อและดำเนินการค้นหาด้วย db มันมีไดรเวอร์ให้เชื่อมต่อกับฐานข้อมูล คุณสามารถใช้ JDBC API เพื่อเข้าถึงข้อมูลแบบตารางที่เก็บไว้ในฐานข้อมูลเชิงสัมพันธ์ โดยความช่วยเหลือของ JDBC API เราสามารถบันทึกอัปเดตลบและดึงข้อมูลจากฐานข้อมูล

ตอนนี้ไฮเบอร์เนตคืออะไร มันเป็นเฟรมเวิร์กที่ไม่เหมือนกับ JDBC คุณต้องนำเข้าไลบรารี Hibernate ก่อนที่จะใช้ในขณะที่ JDBC เป็นส่วนหนึ่งของ J2SE เอง Hibernate ทำสิ่งเดียวกันกับที่ JDBC พัฒนา แต่คุณสามารถพูดได้ว่า Hibernate เป็นระดับ JDBC ขั้นสูง Hibernate ช่วยให้การพัฒนาแอปพลิเคชัน Java ง่ายขึ้นเพื่อโต้ตอบกับฐานข้อมูลเป็นเครื่องมือ ORM ซึ่งหมายถึงการจับคู่วัตถุ java กับตาราง db คลาส Java สามารถแสดงตารางใน db ตัวอย่างเช่นหากคุณแมปตาราง "emp_26" เป็นคลาสพนักงานใน Hibernate คุณจะต้องเขียนแบบสอบถามเชิงวัตถุอย่างง่ายเพื่อดึงข้อมูลพนักงานทั้งหมดจากตาราง empl_26: "จากพนักงาน" // ใน Hibernate "เลือก * จาก emp_26" // ใน JDBC

มีฟีเจอร์มากมายที่ไฮเบอร์เนตจัดเตรียมไว้ให้เช่นแคชการเชื่อมโยงการเชื่อมโยงการสืบทอดการแม็ป HQL เลขหน้าและอื่น ๆ อีกมากมายที่ไม่สามารถใช้งานได้ใน JDBC

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


ตอบ 3:

JDBC เป็นมาตรฐานสำหรับการเชื่อมต่อกับฐานข้อมูลโดยตรงและรัน SQL กับมัน - เช่น SELECT * จากผู้ใช้, เป็นต้นชุดข้อมูลสามารถส่งคืนซึ่งคุณสามารถจัดการในแอปของคุณ, และคุณสามารถทำสิ่งต่าง ๆ เช่น INSERT, DELETE, เรียกใช้กระบวนงานที่เก็บไว้ ฯลฯ เป็นหนึ่งในเทคโนโลยีพื้นฐานที่อยู่เบื้องหลังการเข้าถึงฐานข้อมูล Java ส่วนใหญ่ (รวมถึงผู้ให้บริการ JPA)

หนึ่งในปัญหาที่เกิดขึ้นกับแอพ JDBC แบบดั้งเดิมคือคุณมักจะมีโค้ดเส็งเคร็งที่มีการทำแผนที่จำนวนมากระหว่างชุดข้อมูลและวัตถุที่เกิดขึ้นตรรกะถูกผสมกับ SQL และอื่น ๆ

JPA เป็นมาตรฐานสำหรับการทำแผนที่วัตถุสัมพันธ์ นี่คือเทคโนโลยีที่ช่วยให้คุณสามารถแมประหว่างวัตถุในตารางรหัสและฐานข้อมูล สิ่งนี้สามารถ "ซ่อน" SQL จากนักพัฒนาเพื่อให้สิ่งที่พวกเขาจัดการคือคลาส Java และผู้ให้บริการช่วยให้คุณสามารถบันทึกพวกเขาและโหลดได้อย่างน่าอัศจรรย์ ส่วนใหญ่ไฟล์การแมป XML หรือคำอธิบายประกอบบน getters และ setters สามารถใช้เพื่อบอกผู้ให้บริการ JPA ว่าฟิลด์ใดบนแผนที่วัตถุของคุณซึ่งฟิลด์ใดใน DB ผู้ให้บริการ JPA ที่มีชื่อเสียงที่สุดคือ Hibernate ดังนั้นจึงเป็นจุดเริ่มต้นที่ดีสำหรับตัวอย่างที่เป็นรูปธรรม

ตัวอย่างอื่น ๆ ได้แก่ OpenJPA, toplink เป็นต้น