Διαφορά μεταξύ JPA και Hibernate

Διαφορά μεταξύ JPA και Hibernate
Διαφορά μεταξύ JPA και Hibernate

Βίντεο: Διαφορά μεταξύ JPA και Hibernate

Βίντεο: Διαφορά μεταξύ JPA και Hibernate
Βίντεο: Δίκτυα Υπολογιστών (Μέρος 25ο) - Πρωτόκολλα πραγματικού χρόνου: Διαφορές μεταξύ Η.323 και SIP 2024, Νοέμβριος
Anonim

JPA vs Hibernate

Σχεδόν όλες οι εταιρικές εφαρμογές απαιτείται να έχουν τακτική πρόσβαση σε σχεσιακές βάσεις δεδομένων. Όμως, ένα πρόβλημα που αντιμετωπίστηκε με προηγούμενες τεχνολογίες (όπως το JDBC) ήταν η αναντιστοιχία σύνθετης αντίστασης (διαφορά μεταξύ αντικειμενοστρεφών και σχεσιακών τεχνολογιών). Μια λύση για αυτό το πρόβλημα εισήχθη μέσω της εισαγωγής ενός αφηρημένου στρώματος που ονομάζεται στρώμα επιμονής, το οποίο ενσωματώνει την πρόσβαση στη βάση δεδομένων από την επιχειρηματική λογική. Το JPA (Java Persistence API) είναι ένα πλαίσιο αφιερωμένο για τη διαχείριση σχεσιακών δεδομένων (χρησιμοποιώντας το επίπεδο persistence) σε εφαρμογές 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 Δεκεμβρίου 2009. Το JPA αντικατέστησε τα φασόλια οντοτήτων EJB 2.0 και EJB 1.1 (τα οποία επικρίθηκαν έντονα ως βαρύ από την κοινότητα προγραμματιστών Java). Αν και τα entity beans (στο EJB) παρείχαν αντικείμενα persistence, πολλοί προγραμματιστές είχαν συνηθίσει να χρησιμοποιούν σχετικά ελαφριά αντικείμενα που προσφέρονται από το DAO (Data Access Objects) και άλλα παρόμοια πλαίσια. Ως αποτέλεσμα, εισήχθη το JPA και κατέλαβε πολλά από τα προσεγμένα χαρακτηριστικά των πλαισίων που αναφέρονται παραπάνω.

Εμμονή όπως περιγράφεται στο JPA καλύπτει το API (που ορίζεται σε javax.persistence), JPQL (Java Platform, Enterprise Edition) και μεταδεδομένα που απαιτούνται για σχεσιακά αντικείμενα. Η κατάσταση μιας οντότητας εμμονής συνήθως εμφανίζεται σε έναν πίνακα. Τα στιγμιότυπα μιας οντότητας αντιστοιχούν σε γραμμές του πίνακα της σχεσιακής βάσης δεδομένων. Τα μεταδεδομένα χρησιμοποιούνται για να εκφράσουν τις σχέσεις μεταξύ οντοτήτων. Σχολιασμοί ή ξεχωριστά αρχεία περιγραφής XML (που αναπτύσσονται με την εφαρμογή) χρησιμοποιούνται για τον καθορισμό μεταδεδομένων σε κλάσεις οντοτήτων. Το JPQL, το οποίο είναι παρόμοιο με τα ερωτήματα SQL, χρησιμοποιείται για την υποβολή ερωτημάτων σε αποθηκευμένες οντότητες.

Τι είναι το Hibernate;

Το Hibernate είναι ένα πλαίσιο που μπορεί να χρησιμοποιηθεί για αντικειμενική σχεσιακή αντιστοίχιση που προορίζεται για γλώσσα προγραμματισμού Java. Πιο συγκεκριμένα, είναι μια βιβλιοθήκη ORM (object-relational mapping) που μπορεί να χρησιμοποιηθεί για τη χαρτογράφηση αντικειμενοσχεσιακού μοντέλου σε συμβατικό σχεσιακό μοντέλο. Με απλά λόγια, δημιουργεί μια αντιστοίχιση μεταξύ κλάσεων Java και πινάκων σε σχεσιακές βάσεις δεδομένων, επίσης μεταξύ τύπων δεδομένων Java σε SQL. Η αδρανοποίηση μπορεί επίσης να χρησιμοποιηθεί για αναζήτηση και ανάκτηση δεδομένων με τη δημιουργία κλήσεων SQL. Επομένως, ο προγραμματιστής απαλλάσσεται από τον χειροκίνητο χειρισμό συνόλων αποτελεσμάτων και τη μετατροπή αντικειμένων. Το Hibernate κυκλοφορεί ως πλαίσιο ελεύθερου και ανοιχτού κώδικα που διανέμεται με άδεια 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 όσο και το Annotations ακολουθούν τον κύκλο ζωής του Hibernate. Η πιο πρόσφατη έκδοση JPA (JPA 2.0) υποστηρίζεται πλήρως από την Hibernate 3.5. Το JPA έχει το πλεονέκτημα ότι έχει μια διεπαφή που είναι τυποποιημένη, επομένως η κοινότητα προγραμματιστών θα είναι πιο εξοικειωμένη με αυτήν από το Hibernate. Από την άλλη πλευρά, τα εγγενή API Hibernate μπορούν να θεωρηθούν πιο ισχυρά επειδή οι δυνατότητες του είναι υπερσύνολο αυτού του JPA.

Συνιστάται: