JPA срещу хибернация
Почти всички корпоративни приложения са необходими за редовен достъп до релационни бази данни. Но проблем, с който се сблъскват по-ранните технологии (като JDBC), е несъответствието на импеданса (разлика между обектно-ориентираните и релационните технологии). Решение на този проблем беше въведено чрез въвеждането на абстрактен слой, наречен Персистентен слой, който капсулира достъпа до база данни от бизнес логиката. 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 (които бяха силно критикувани за тежка категория от общността на разработчиците на Java). Въпреки че зърната на субектите (в EJB) предоставят обекти за постоянство, много разработчици са използвали вместо това да използват сравнително леки обекти, предлагани от DAO (обекти за достъп до данни) и други подобни рамки. В резултат на това беше въведена JPA и тя обхвана много от чистите характеристики на споменатите по-горе рамки.
Постоянството, както е описано в JPA, обхваща API (дефиниран в javax.persistence), JPQL (Java Platform, Enterprise Edition) и метаданни, необходими за релационни обекти. Състоянието на устойчиво образувание обикновено се поддържа в таблица. Екземплярите на образувание съответстват на редовете от таблицата на релационната база данни. Метаданните се използват за изразяване на връзките между субектите. Анотации или отделни дескрипторни файлове на XML (разгърнати с приложението) се използват за задаване на метаданни в класовете на образувания. JPQL, което е подобно на SQL заявки, се използват за заявка на съхранени обекти.
Какво е хибернация?
Hibernate е рамка, която може да се използва за обектно-релационно картографиране, предназначена за програмния език на Java. По-конкретно, това е библиотека ORM (обектно-релационно картографиране), която може да се използва за картографиране на обектно-релационен модел в конвенционален релационен модел. Казано по-просто, той създава картографиране между класове на Java и таблици в релационни бази данни, също между типове данни на Java към SQL. Хибернацията може да се използва и за търсене и извличане на данни чрез генериране на SQL повиквания. Следователно програмистът се освобождава от ръчното боравене с набори от резултати и конвертиране на обекти. Hibernate се пуска като безплатна и отворена програма, разпространена под лиценз на GNU. Приложението за JPA API се предлага в хибернация 3.2 и по-нови версии. Гевин Кинг е основател на „Хибернация“.
Каква е разликата между JPA и Hibernate?
JPA е рамка за управление на релационни данни в Java приложения, докато Hibernate е специфична реализация на JPA (така че в идеалния случай JPA и Hibernate не могат да се сравняват директно). С други думи, Hibernate е една от най-популярните рамки, която реализира JPA. Hibernate реализира JPA чрез библиотеки Hibernate Annotation и EntityManager, които се реализират над библиотеките на Hibernate Core. И EntityManager, и пояснения следват жизнения цикъл на хибернацията. Най-новата версия на JPA (JPA 2.0) се поддържа изцяло от Hibernate 3.5. JPA има предимството да има интерфейс, който е стандартизиран, така че общността на разработчиците ще бъде по-запозната с него от хибернацията. От друга страна, родните API за хибернация могат да се считат за по-мощни, тъй като характеристиките му са суперсет от тези на JPA.