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

Anonim

JPA vs Hibernate

Σχεδόν όλες οι επιχειρησιακές εφαρμογές απαιτούνται για την τακτική πρόσβαση σε σχεσιακές βάσεις δεδομένων. Αλλά ένα πρόβλημα που αντιμετώπιζε με προηγούμενες τεχνολογίες (όπως το JDBC) ήταν η αναντιστοιχία της σύνθετης αντίστασης (διαφορά μεταξύ αντικειμενοστραφούς και σχεσιακής τεχνολογίας). Μια λύση για αυτό το πρόβλημα εισήχθη με την εισαγωγή ενός αφηρημένου στρώματος που ονομάζεται στρώμα Persistence, το οποίο ενσαρκώνει την πρόσβαση βάσης δεδομένων από την επιχειρησιακή λογική. Το 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). Αν και τα φασόλια οντότητας (στο EJB) παρείχαν αντικείμενα αντοχής, πολλοί προγραμματιστές χρησιμοποιήθηκαν για να χρησιμοποιήσουν σχετικά σχετικά ελαφριά αντικείμενα που προσφέρονται από DAO (Data Access Objects) και άλλα παρόμοια πλαίσια. Ως αποτέλεσμα, εισήχθη η Κοινοβουλευτική Συνέλευση Ίσης Εκπροσώπησης και κατέλαβε πολλά από τα χαρακτηριστικά γνωρίσματα των προαναφερθέντων πλαισίων.

Η ανθεκτικότητα όπως περιγράφεται στην ΚΣΠ καλύπτει το 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 είναι ένα από τα πιο δημοφιλή πλαίσια που εφαρμόζει η ΚΣΙΕ. Το Hibernate υλοποιεί το JPA μέσω βιβλιοθηκών Hibernate Adnotation και EntityManager που υλοποιούνται πάνω από τις βιβλιοθήκες Hibernate Core. Τόσο το EntityManager όσο και οι σχολιασμοί ακολουθούν τον κύκλο ζωής του Hibernate. Η νεότερη έκδοση JPA (JPA 2. 0) υποστηρίζεται πλήρως από το Hibernate 3. 5. Η JPA έχει το πλεονέκτημα ότι διαθέτει διεπαφή που είναι τυποποιημένη, οπότε η κοινότητα προγραμματιστών θα είναι πιο εξοικειωμένη με αυτήν από την Αδρανοποίηση. Από την άλλη πλευρά, τα εγγενή APIs Hibernate μπορούν να θεωρηθούν πιο ισχυρά, επειδή τα χαρακτηριστικά τους είναι ένα ξεπέρασμα αυτής της JPA.