Кіріспе

Объекті-реляциялық карталау құралы

Hibernate ORM (немесе жай ғана Hibernate) – Java бағдарламалау тілі үшін объекті-реляциялық карталау құралы. Ол объектіге бағытталған домендік модельді реляциялық деректер базасына бейімдеуге арналған құрылымды ұсынады. Hibernate объекті-реляциялық кедергілердің сәйкессіздік проблемаларын тікелей, тұрақты деректер базасына қол жеткізуді жоғары деңгейдегі объектілерді басқару функцияларымен алмастыру арқылы шешеді. Hibernate – GNU Lesser General Public License 2.1 лицензиясы бойынша таратылатын ақысыз бағдарламалық қамтамасы. Hibernate-тің басты ерекшелігі – Java кластарын деректер базасы кестелеріне және Java дерек түрлерін SQL дерек түрлеріне бейімдеу. Hibernate сондай-ақ деректерді сұрау және алу мүмкіндіктерін де ұсынады. Ол SQL сұрауларын жасайды және әзірлеушіні нәтиже жиынтығын қолмен өңдеуден және объектілерді түрлендіруден босатады.

Hibernate Query Language (HQL) - тынығу сұранысы тілі

Hibernate дерек объектілеріне қатысты SQL-ге ұқсас сұрауларды жазу үшін Hibernate Query Language (HQL) деп аталатын SQL-ге негізделген тілді ұсынады. HQL-ға объектіге бағытталған балама ретінде Критерий сұраулары қарастырылады. Критерий сұраулары объектілерді өзгертуге және оларға шектеулер қоюға қолданылады. HQL (Hibernate Query Language) – SQL-дің объектіге бағытталған түрі. Ол дерекқорына тәуелсіз сұрауларды жасайды, сондықтан әртүрлі дерекқорлар үшін жеке сұраулар жазу қажеттігі тумайды. Бұл мүмкіндік болмаған жағдайда, дерекқоры ауыстырылғанда әрбір SQL сұрауын жеке өзгертуге тура келіп, техникалық қолдау мәселелеріне әкелуі мүмкін.

Тұрақтылық

Hibernate Plain Old Java Objects (POJOs) үшін мөлдір тұрақтылықты қамтамасыз етеді. Тұрақты кластың жалғыз қатаң талабы – аргументсіз конструктор, бірақ бұл міндетті емес. Кейбір қолданбаларда дұрыс жұмыс істеу үшін кластардағы `equals` және `hashCode` әдістеріне ерекше назар аудару қажет. Hibernate идентификатор атрибутын қосуды ұсынады және бұл болашақ нұсқада міндетті талап болады деп жоспарлануда. Деректер объектілерінің жиынтығы әдетте Java жиынтық кластарында сақталады, мысалы, `List` және `Set` интерфейстерінің іске асырылулары. Java 5-те енгізілген Java generics та қолдау көрсетіледі. Hibernate-ті байланысты жинақтарды кейінгі жүктеу (lazy loading) арқылы конфигурациялауға болады. Hibernate 3 нұсқасынан бастап кейінгі жүктеу әдепкі параметр болып табылады. Байланысты объектілерді бір объектіден екіншісіне каскадтық операцияларды таратуға конфигурациялауға болады. Мысалы, ата-ана класының объектісі өзінің `save` және `delete` операцияларын бала класының объектілеріне каскадтау үшін конфигурациялануы мүмкін.

Интеграциялау

Hibernate жеке Java қосымшаларында да, сервлеттерді, EJB сессиялық бұйымдарын және JBI қызметтік компоненттерін пайдаланатын Java EE қосымшаларында да қолданылуы мүмкін. Ол басқа бағдарламалау тілдерінде мүмкіндік ретінде де қосылуы мүмкін. Мысалы, Adobe Hibernate-ті ColdFusion-нің 9-шы нұсқасына (J2EE қосымша серверлерінде іске қосылады) жаңа функциялар мен синтаксистің CFML-ге қосылған абстракциялық қабатымен интеграциялады.

Ұйымдар мен құрамдас бөліктер

Hibernate терминологиясында, нысан – Hibernate-тің тұрақты механизмiндегi дербес объектi, оны басқа объектiлерден тәуелсiз басқаруға болады. Ал компонент нысанға бағынышты және тек сол нысан арқылы ғана өзгертiлуi мүмкiн. Мысалы, Album объектiсi нысанды көрсетедi; бiрақ Album объектiлерiмен байланысты Tracks объектiсi, егер Tracks тек Album объектiсi арқылы деректер базасынан сақталуы немесе алынуы мүмкiн болса, Album нысанының компонентi болып табылады. J2EE-ден айырмашылығы, Hibernate деректер базасын өзгерте алады.

Тарих

Hibernate 2001 жылы Gavin King және Cirrus Technologies компаниясының әріптестерімен EJB2 стиліндегі объектілік бұршақтарды пайдаланудың баламасы ретінде басталды. Бастапқы мақсат – күрделілікті жеңілдету және кейбір жетіспейтін мүмкіндіктерді толықтыру арқылы EJB2 ұсынғаннан гөрі жақсы тұрақтылық мүмкіндіктерін ұсыну болды. 2003 жылдың басында Hibernate әзірлеу тобы Hibernate2 нұсқасын шығара бастады, ол алғашқы нұсқаға қарағанда көптеген маңызды жақсартуларды ұсынды. JBoss, Inc. (қазір Red Hat-тың бір бөлігі) кейіннен оның дамуын жалғастыру үшін Hibernate-тің жетекші әзірлеушілерін жалдады. 2005 жылы Hibernate 3.0 нұсқасы шығарылды. Негізгі мүмкіндіктерге жаңа Interceptor / Callback архитектурасы, пайдаланушы анықтаған сүзгілер және JDK 5.0 Annotations (Java метадеректері) кіреді. Hibernate 3 (3.5.0 және одан жоғары нұсқалары) – JSR 317 стандартына сәйкестікті қамтамасыз ететін Core модулі үшін wrapper арқылы Java Persistence API 2.0 спецификациясының сертификатталған іске асырылуы. 2011 жылдың желтоқсан айында Hibernate Core 4.0.0 Final шығарылды. Бұл көптеген жалдауларды қолдау, ServiceRegistry енгізу (Hibernate-тің «қызметтерді» қалай құру және басқарудағы маңызды өзгеріс), SessionFactory-ден сеансты жақсы ашу, org.hibernate.integrator.spi.Integrator және автоматты табу арқылы интеграцияны жақсарту, интернационализациялауды қолдау, журналға жазудағы хабарлама кодтары және API, SPI немесе іске асыру сыныптары арасындағы айқын айырмашылық сияқты жаңа мүмкіндіктерді қамтиды. 2012 жылдың желтоқсан айында Hibernate ORM 4.1.9 Final шығарылды. 2013 жылдың наурыз айында Hibernate ORM 4.2 Final шығарылды. 2013 жылдың желтоқсан айында Hibernate ORM 4.3.0 Final шығарылды. Ол Java Persistence API 2.1 мүмкіндіктерін ұсынады. 2015 жылдың қыркүйегінде Hibernate ORM 5.0.2 Final шығарылды. Ол бастапқы жүктеуді, hibernate java8, hibernate spatial, Karaf қолдауын жақсартты. 2018 жылдың қарашасында Hibernate ORM 5.1.17 Final шығарылды. Бұл 5.1 сериясының соңғы нұсқасы. 2018 жылдың қазан айында Hibernate ORM 5.3 Final шығарылды. Ол Java Persistence API 2.2 мұрагерлік кэшімен ерекшеленді. 2018 жылдың желтоқсан айында Hibernate ORM 5.4.0 Final шығарылды. 2022 жылдың қазан айында Hibernate ORM 6.1.4 Final шығарылды.

Қолданбалық бағдарламалау интерфейсі

Hibernate API Java бумасында ұсынылған.

org.hibernate.SessionFactory интерфейсі

Интерфейс – JPA стандартының түпнұсқалық нұсқасы.

org.hibernate.Session интерфейсі

Интерфейс Hibernate сессиясын білдіреді, яғни деректер базасының объектілерімен (entity) жұмыс істеудің негізгі нүктесін. Осы әрекеттердің ішінде (басқа нәрселермен қатар) объектілердің сақталу күйін (өткінші, сақталған, ажыратылған) басқару, сақталған объектілерді деректер базасынан алу және транзакцияны бастау/аяқтауды басқару кіреді. бір логикалық деректер базасы транзакциясы бойында жұмыс істеуге арналған. Осы ерекшелікке байланысты, іске асылымдарының жіптік қауіпсіздікке (thread safe) ие болуы және бірнеше клиенттермен қолданылуы күтілмейді.