Java Enterprise: JPA a Hibernate dávajú zbohom tradičnému SQL!

Od pradávnych čias, odkedy sa Java nevolá Oak (Dub) ale Java, má jedno nezmazateľné posolstvo: 'bežať na každom železe'. Toto posolstvo bolo párkrát rozšírené v rôznych oblastiach. Ponúkam vám stručný úvod, ako to platí v databázových java aplikáciach.

Veľký tresk sa volal JDBC

Pri samotnom vývoji Javy, v polovici 90tych rokov, prišli jej vývojari s revolučnou myšlienkou: 'urobme príkazy, ktoré obsluhujú databázu jednotné, prirpavme rozhrania, ktoré si každý výrobca databáz bude implementovať po svojom'. JDBC (Java Database Connectivity) prestavuje jednotné API na prácu s databázou. Toto jednotné rozhranie umožnovalo, aby sa programátori sústredili na samotné programovanie, nemuseli riešiť kompatibilitu príkazov na rôznych typoch databáz.

Pamätáte si, ako programy pristupovali k databázovým zdrojom koncom 90tych rokov? Asi starnem, ale ja si to pamätám. Napr. populárne Delphi - čo typ databázy, to iný zdroj, to iné príkazy.

Limity JDBC

Tento javácky tradičný prístup do databáz vyžadoval pripojenie na databázový zdroj a položenie klasického SQL príkazu. Ak programátor chcel urobiť aplikáciu skutočne 'blbovzdrone', potreboval poošetrovať rôzne kritické prípady, ako napr. nedostupnosť databázového zdroja alebo zlyhanie databázového spojenia. Azda najhorší možný prípad, čo mohol vziknúť je ten, že programátor v jave zostavil príkaz do databázy, ktorým vyťahoval údaje a neuzatváral ResultSet. To mohlo zhodiť aj ostatné programy na aplikačnom serveri, ktoré vôbec nemuseli byť naprogramované v jave.

Veľká nevýhoda tohto prístupu je v tom, že pokladané SQL príkazy sú rôzne pre rôzne typy databáz. Áno, dali by sa využiť štandardizované dotazy podľa ANSI špecifikácie, len potom by sme nevyužili prednosti konkrétnej implementácie databázového stroja.

Ďalšia nevýhoda je v tom, že nie je presne určený proces, ktorý mapuje logiku aplikácie na príkazy SQL. Toto mapovanie vzniká väčšinou intuitívne v hlave programátora, bez konceptu, čo je jednak zdrojom chýb, ba čo viac, takýto koncept zabraňuje jednoduchému rozširovaniu standalone/web aplikácie. Tieto intutívne mapovania objektov na databázu bývajú pevne zviazané, čo pri správe aplikácie môže vyvolať značné problémy.

JPA: objektovo-relačné mapovanie

Objektovo relačné mapovanie (ORM) presne určuje, akým spôsobom budeme mapovať entity z databázy na objekty. V duchu ORM by sme mali vytvárať jednoduché triedy POJO (Plain Old Java Object). Inštancie týchto POJO tried budú vytvárať jednotlivé riadky tabuliek (napr. aj s joinovaných).

Java Persistence API (JPA) predstavuje špecifikáciu tohto sprocesovaného objektovo-relačného mapovania. JPA môžete chápať ako totálny štandard nezávislosti na RDBMS (Relational Database Management System) ako napr. MySQL , MariaDB, Oracle, PostgreeDB, atď. Presne tak, okrem samotnej špecifikácie JPA predstavuje univerzálnosť napísaných programov od verzie databázy.

JPA to myslí vážne. Zachádza až tak ďaleko, že má k dispozícií vlastný jazyk na písanie databázových tried JPQL (Java Persistence Query Language). V ideálnom prípade nebudete JPQL vôbec potrebovať. Vystačíte si s POJO triedami, ktoré budete vkladat do (resp. vyberať z)  entitného manažéra. Entitný manžér sa už o všetko postará automaticky - položí SQL príkaz v konkrétnom RDBMS dialekte.

Čo je Hibernate?

Hibernate objektovo-relačný framework, ktorý umožňuje vysoko-výkonné objektovo-relačné mapovanie v aplikáciach, ktoré sú písané v Jave. Dá sa povedať, že Hibernate je nadstavba JPA (Java Persistence API), ktorú vývíja RedHat.

Tento framework je licencovaný pod LGPL, čiže sa dá voľne stiahnuť a integrovať do java aplikácií. V podstate si stačí nakopírovať pár riadkov do maven konfiguráku a máte to rozchodené.

Pointa Hibernatu je taktáto: Vytvoríte si POJO objekty, ktoré kopírujú nastavenie (terajšej alebo budúcej!) databázy. Tieto objekty potom naanotujete podľa špecifikácie tak, aby Hibernate tušil čo je tabuľka a čo atribút. Následne si vytvoríte reláciu hibernatu, do ktorej vkladáte resp. z ktorej vyberáte takéto objetky. O samotné zostroje príkazov SQL sa postará hibernate! Ba čo viac, pokiaľ nemáte vytvorenú databázu, môžete si ju nechať vytvoriť Hiberantom podľa mapovania, ktoré ste zadali! Existuje aj opačný proces, pri ktorom vám z existujúcej databázovej schémy vzniknú POJO objekty namapovanie podľa hibernate anotácii.

Hibernate môžete použiť v Jave Enterpise aplikáciach ako aj obyčajných standanlone aplikáciach.

Ako začať programovať?

Úvod do programovania pre každého bez prechádzajúcich znalostí.

Stiahnite so náš ebook teraz výnimočne zdarma!!!

Viac informacií preberáme na kurze:

Kurz JAVAEEHIB - Java: Hibernate - praktický úvod do databázového frameworku

Marián Knězek

 

Súvisiace články: