JPA крш. Күтүү
Дээрлик бардык ишкана колдонмолору реляциялык маалымат базаларына үзгүлтүксүз кирүү үчүн талап кылынат. Бирок мурунку технологияларда (мисалы, JDBC) туш болгон көйгөй импеданстын дал келбеши (объектке багытталган жана реляциялык технологиялардын ортосундагы айырма) болгон. Бул көйгөйдүн чечими бизнес логикасынан маалымат базасына кирүүнү камтыган Persistence катмары деп аталган абстракттуу катмарды киргизүү аркылуу киргизилген. JPA (Java Persistence API) Java тиркемелериндеги реляциялык маалыматтарды (туруктуу катмарды колдонуу менен) башкаруу үчүн арналган алкак. Java иштеп чыгуучулар коомчулугунда колдонулган JPA көптөгөн сатуучу ишке ашыруулары бар. 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, ал 2009-жылдын 10-декабрында жарык көргөн. JPA EJB 2.0 жана EJB 1.1 төө бурчактарын алмаштырды (алар Java иштеп чыгуучуларынын коомчулугу тарабынан оор салмактуу болгону үчүн катуу сынга алынган). Объекттин буурчактары (EJBде) туруктуу объекттерди камсыз кылганына карабастан, көптөгөн иштеп чыгуучулар анын ордуна DAO (Data Access Objects) жана башка ушул сыяктуу алкактар сунуштаган салыштырмалуу жеңил объекттерди колдонууга көнүшкөн. Натыйжада, JPA киргизилип, ал жогоруда айтылган рамкалардын көптөгөн тыкан өзгөчөлүктөрүн камтып алды.
JPAда сүрөттөлгөндөй туруктуулук APIди камтыйт (javax.туруктуулук), JPQL (Java Platform, Enterprise Edition) жана реляциялык объекттер үчүн керектүү метаберилиштер. Туруктуу объектинин абалы адатта таблицада сакталат. Объекттин инстанциялары реляциялык маалымат базасынын таблицасынын саптарына туура келет. Метадайындар субъекттердин ортосундагы мамилелерди билдирүү үчүн колдонулат. Аннотациялар же өзүнчө XML дескриптор файлдары (тиркеме менен орнотулган) объект класстарындагы метаберилиштерди көрсөтүү үчүн колдонулат. SQL сурамдарына окшош JPQL сакталган объекттерди суроо үчүн колдонулат.
Каттоо деген эмне?
Күтүү – бул Java программалоо тили үчүн арналган объект-катыштык карта түзүү үчүн колдонула турган алкак. Тактап айтканда, бул ORM (объект-реляциялык карталоо) китепканасы, аны кадимки реляциялык моделге объекти-реляциялык моделди картага түшүрүү үчүн колдонсо болот. Жөнөкөй сөз менен айтканда, ал Java класстары менен реляциялык маалымат базаларындагы таблицалардын, ошондой эле Javaдан SQLге чейинки маалымат түрлөрүнүн ортосундагы картаны түзөт. Күтүү режимин SQL чалууларын түзүү менен маалыматтарды суроо жана алуу үчүн да колдонсо болот. Демек, программист натыйжалар топтомун кол менен иштетүүдөн жана объекттерди конвертациялоодон бошотулат. Hibernate GNU лицензиясы боюнча таратылган эркин жана ачык булак алкагы катары чыгарылган. JPA API үчүн ишке ашыруу Hibernate 3.2 жана андан кийинки версияларында берилген. Гэвин Кинг Гибернаттын негиздөөчүсү.
JPA менен Күтүү режиминин ортосунда кандай айырма бар?
JPA - бул Java тиркемелериндеги реляциялык маалыматтарды башкаруу үчүн негиз, ал эми Hibernate - JPAнын белгилүү бир ишке ашырылышы (ошондуктан, JPA менен Күтүү режимин түз салыштырууга болбойт). Башкача айтканда, Hibernate JPAны ишке ашырган эң популярдуу алкактардын бири. Hibernate JPAны Hibernate Annotation жана EntityManager китепканалары аркылуу ишке ашырат, алар Hibernate Core китепканаларынын үстүндө ишке ашырылат. EntityManager да, Аннотациялар да Күтүү режиминин жашоо циклин ээрчишет. Жаңы JPA версиясы (JPA 2.0) Hibernate 3.5 тарабынан толугу менен колдоого алынат. JPA стандартташтырылган интерфейске ээ болуу менен артыкчылыкка ээ, андыктан иштеп чыгуучулардын коомчулугу аны менен Hibernate режимине караганда көбүрөөк тааныш болот. Башка жагынан алганда, жергиликтүү Hibernate API'лерин күчтүүрөөк деп эсептесе болот, анткени анын функциялары JPAнын функцияларынын супер топтому болуп саналат.