JPA vs Hibernate
Գրեթե բոլոր ձեռնարկությունների հավելվածները պետք է կանոնավոր կերպով մուտք գործեն հարաբերական տվյալների բազա: Սակայն ավելի վաղ տեխնոլոգիաների (օրինակ՝ JDBC) հետ կապված խնդիրը եղել է դիմադրության անհամապատասխանությունը (տարբերությունը օբյեկտի վրա հիմնված և հարաբերական տեխնոլոգիաների միջև): Այս խնդրի լուծումը ներկայացվել է վերացական շերտի ներդրման միջոցով, որը կոչվում է Persistence շերտ, որը ներառում է տվյալների բազայի հասանելիությունը բիզնես տրամաբանությունից: JPA (Java Persistence API) շրջանակ է, որը նվիրված է հարաբերական տվյալների կառավարմանը (օգտագործելով կայունության շերտը) Java հավելվածներում: JPA-ի բազմաթիվ վաճառողներ կան, որոնք օգտագործվում են Java ծրագրավորողների համայնքում:Ձմեռումը JPA-ի ամենահայտնի նման իրականացումն է (DataNucleus-ը, EclipseLink-ը և OpenJPA-ն ուրիշներն են): JPA-ի նորագույն տարբերակը (JPA 2.0) լիովին աջակցվում է Hibernate 3.5-ի կողմից, որը թողարկվել է 2010թ. մարտին:
Ի՞նչ է JPA?
JPA-ն Java-ի համար հարաբերական տվյալների կառավարման շրջանակ է: Այն կարող է օգտագործվել JSE-ի (Java հարթակ, ստանդարտ հրատարակություն) կամ JEE-ի (Java պլատֆորմ, ձեռնարկության հրատարակություն) օգտագործող հավելվածների հետ: Դրա ներկայիս տարբերակը JPA 2.0-ն է, որը թողարկվել է 2009թ. դեկտեմբերի 10-ին: JPA-ն փոխարինեց EJB 2.0 և EJB 1.1 entity beans-ը (որոնք խիստ քննադատության էին ենթարկվում Java-ի մշակողների համայնքի կողմից ծանր քաշ լինելու համար): Թեև entity beans-ը (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-ը:Մյուս կողմից, բնիկ Hibernate API-ները կարելի է համարել ավելի հզոր, քանի որ դրա առանձնահատկությունները JPA-ի գերկոմպլեկտն են: