Hibernate

Püsivus

Hibernate pakub püsivust tavaliste Java objektide (POJOs) jaoks. Range nõue püsiva klassi jaoks on ilma argumendita konstruktor, see ei pea public olema. Erilist tähelepanu nõuavad ka equals() ja hashCode() meetodid.
Andmeobjektide kogud on tavaliselt salvestatud Java kollektsiooni objektidesse, nagu Set ja List. Hibernate'is saab seadistada laisa laadimisega seotud kogud. Laisk laadimine on vaikimisi olemas Hibernate 3 versioonis.
Seotud objektid võivad olla konfigureeritud kaskaadima toiminguid ühest teisse. Näiteks ülemobjekti Album saab seadistada kaskaadima oma save ja / või delete operatsioone enda alamobjektile Track. See võib vähendada ajakulu ja tagada referentsiaalset terviklikkust. Dirty checking funktsioon väldib tarbetuid andmebaasi kirjutamistegevusi tehes SQL-uuendusi ainult püsivate objektidega modifitseeritud väljadel.

Hibernate'i päringute keel (HQL)

Hibernate kasutab SQL-keelest inspireeritud keelt Hibernate Query Language (HQL), mis võimaldab SQL-tüüpi päringute kirjutamist Hibernate andmeobjektide vastu. HQL-i asemel saab kasutada ka kriteeriumipäringuid.

Integratsioon

Hibernate'i saab kasutada autonoomsetel Java rakendustel ja Java EE rakendustel, kasutades servlette, EJB seansiobjekte ja JBI teenuste komponente. Rakendus võib olla lisatud ka teistes programmeerimiskeeltes. Näiteks Adobe integreeris Hibernate'i ColdFusion 9 versiooni CFML sisse (mis jookseb J2EE serveri peal). Integreeriti koos abstraktsioonide kihiga ning uute funktsioonide ja süntaksiga.

Üksused ja komponendid

Hibernate'i žargoonis on olem (entity) omaette objekt Hibernate'i püsivas mehhanismis, millega saab manipuleerida sõltumata teistest objektidest. Seevastu component allub teistele üksustele ja sellega saab manipuleerida ainult seoses muude üksustega. Näiteks objekt Album võib esindada üksust, kuid objekt Track, mis on assotsieerunud Album objektidega esindab komponenti Album üksusest, kui eeldada, et Track'i saab salvestada või laadida Album objekti kaudu. Erinevalt J2EE-st saab objekt siin vahetada andmebaase.

Ajalugu

Hibernate loodi 2001. aastal Gavin King algatusel ja see oli alternatiiviks EJB2-stiilis objektide kasutamisele, vähendades keerukust ning võimaldades puuduvaid funktsioone.
2003. aasta alguses alustas Hibernate'i arendusmeeskond Hibernate 2 turule toomist, mis pakkus mitmeid olulisi parandusi esimese versiooniga võrreldes.
JBoss, Inc. (nüüd osa Red Hati ettevõttest) palkas hiljem juhtivaid Hibernate'i arendajaid ja töötas nende toetusel Hibernate'i arendamisel.
2010. aastal ilmus Hibernate'i versioon 3.x koos selliste funktsioonidega: uus Interceptor / Callback arhitektuur, kasutaja määratletud filtrid ja JDK 5,0 annotatsioonid (Java metaandmete funktsioon).
Aasta 2010 seisuga oli Hibernate 3 (versioon 3.5.0 ja uuem) Java Persistence API 2.0 sertifitseeritud realisatsiooni spetsifikatsioon pakendina Core mooduli jaoks, mis on kooskõlas [JSR 317] standardiga.
2011. aasta detsembris ilmus Hibernate Core 4.0.0 lõplikult. See sisaldas uusi funktsioone, nagu Esmane multi-haldus tugi, Sissejuhatus ServiceRegistry'sse (mis on peamine muutus selles, kuidas Hibernate ehitab ja haldab "teenuseid"), sessioonide avamise eemaldamist SessionFactory'st, Parem integratsioon org.hibernate.integrator.spi.Integrator kaudu ja automaatse avastamise funktsioon, parem sisselogimine koos i18n toega ja veakoodidega, esimene selgem lahknevus API, SPI ja ilmplementatsiooni klasside vahel, iganenud meetodite, klasside jms eemaldamine.
2012. aastal hakati arendama Hibernate 5, mis sisaldas JPA 2.1 tuge.

Rakenduse programmeeritav liides

Hibernate API sisaldub Java paketis.

org.hibernate.SessionFactory interface

Muutumatud viited ja lõime ohutuse objektid loovad uue Hibernate'i sessiooni. Hibernate'i-põhised rakendused on tavaliselt loodud selleks, et kasutada ainult üksikjuhtumeid klassi liidese rakendamisel (sageli esindatud kasutades üksikuid disainimustreid).

org.hibernate.Session interface

Esindab Hibernate'i sessiooni st põhilised manipulatsioonid toimuvad andmebaasi objektide sees. Viimasena nimetatud tegevuste hulka kuuluvad (lisaks muudele asjadele) objektide oleku salvestamise juhtimine (muutumine, püsimine, eraldumine), andmebaasist püsivate valimine ja tehingute piiritlemise haldamine.