Разлика между JPA и Hibernate

Разлика между JPA и Hibernate
Разлика между JPA и Hibernate

Видео: Разлика между JPA и Hibernate

Видео: Разлика между JPA и Hibernate
Видео: В чем разница между JPA и Hibernate? JDBC и Hibernate. Урок 4 2024, Ноември
Anonim

JPA срещу Hibernate

От почти всички корпоративни приложения се изисква редовен достъп до релационни бази данни. Но проблемът, пред който са изправени по-ранните технологии (като JDBC), е несъответствието на импеданса (разлика между обектно-ориентирани и релационни технологии). Беше въведено решение за този проблем чрез въвеждането на абстрактен слой, наречен Persistence слой, който капсулира достъпа до базата данни от бизнес логиката. JPA (Java Persistence API) е рамка, предназначена за управление на релационни данни (използвайки слоя за устойчивост) в Java приложения. Има много реализации на 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 entity beans (които бяха силно критикувани, че са тежки от общността на разработчиците на Java). Въпреки че съединителните компоненти (в EJB) предоставят обекти за устойчивост, много разработчици бяха свикнали да използват вместо това относително леки обекти, предлагани от DAO (обекти за достъп до данни) и други подобни рамки. В резултат на това беше въведен JPA и той улови много от чистите характеристики на рамките, споменати по-горе.

Постоянството, както е описано в JPA, обхваща API (дефиниран в javax.постоянство), JPQL (Java Platform, Enterprise Edition) и метаданни, необходими за релационни обекти. Състоянието на постоянен обект обикновено се запазва в таблица. Екземплярите на обект съответстват на редове от таблицата на релационната база данни. Метаданните се използват за изразяване на връзките между обектите. Анотации или отделни XML дескрипторни файлове (разгърнати с приложението) се използват за указване на метаданни в класовете на обекти. JPQL, който е подобен на SQL заявките, се използва за заявки към съхранени обекти.

Какво е Hibernate?

Hibernate е рамка, която може да се използва за обектно-релационно картографиране, предназначено за езика за програмиране Java. По-конкретно, това е библиотека ORM (обектно-релационно картографиране), която може да се използва за картографиране на обектно-релационния модел в конвенционален релационен модел. С прости думи, той създава съпоставяне между Java класове и таблици в релационни бази данни, също между Java към SQL типове данни. Hibernate може също да се използва за запитване и извличане на данни чрез генериране на SQL извиквания. Следователно програмистът е освободен от ръчната обработка на набори от резултати и конвертиране на обекти. Hibernate се пуска като безплатна рамка с отворен код, разпространявана под GNU лиценз. Реализация за JPA API е предоставена в Hibernate 3.2 и по-нови версии. Гавин Кинг е основателят на 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.

Препоръчано: