Grails-пен жұмыс істеу: GORM — Күлкілі атау және маңызды технология

Новости мира

Өткен айда Grails-пен жұмыс жасау сериясының кіріспе мақаласы Grails деп аталатын жаңа веб-қосымшаларды әзірлеу негізін ұсынды. Grails MVC (Model-View-Controller), алаңдаушылықтарды бөлу және конфигурацияға қатысты конвенция сияқты заманауи тәсілдерді қамтиды. Кірістірілген тірек мүмкіндіктерімен біріктірілген Grails веб-сайттың алғашқы жұмыс нұсқасын бірнеше минут ішінде іске қосуға мүмкіндік береді.

Бұл мақала Grails жеңілдететін басқа салаға назар аударады: GORM API арқылы нысан тұрақтылығы. Мақала объектілік қатынасты бейнелеуші ​​(ORM) дегеніміз не және бір-көп қатынасын қалай жасау керектігі туралы сипаттамадан басталады. Төменде қолданбаның қоқыс шығару/қоқыс шығару синдромынан зардап шекпейтініне көз жеткізу үшін деректерді тексеру туралы айтылады. Біз POGO нысандарының (қарапайым ескі Groovy нысандары) қолданбадан тыс тұрақты сақталу жолын дәл реттеуге мүмкіндік беретін Grails ORM DSL (доменге тән тіл — белгілі бір домен аймағына арналған тіл) практикалық қолданылуын көрсетеміз. Соңында, ол бір реляциялық дерекқордан екіншісіне ауысудың қаншалықты оңай екенін көрсетеді. JDBC драйверін және күту диалектісін қолдайтын кез келген дерекқор орындалады.

Осы мақала сериясы туралы

Grails — Spring және Hibernate сияқты орнатылған Java технологияларын конфигурациялау тәсілдеріне қатысты заманауи конвенциямен біріктіретін заманауи веб-қосымшаларды әзірлеу жүйесі. Groovy тілінде жазылған Grails сценарий тілдерінің икемділігі мен динамизмін қоса отырып, бар Java кодымен үздіксіз интеграцияны қамтамасыз етеді. Grails-ті үйренгеннен кейін веб-әзірлеуге деген көзқарастарыңыз мәңгілікке өзгереді.

ORM анықтамасы

Реляциялық дерекқорлар 1970 жылдардың аяғынан бері белгілі және бағдарламалық жасақтаманы әзірлеушілер әлі де оларда энергияны үнемдеу және объектілерді жүктеуді тиімді жұмсауы керек. Заманауи бағдарламалық қамтамасыз ету ең танымал деректер қорларында қолданылатын реляциялық тәсілге емес, объектіге бағытталған принциптерге негізделген.

Мәліметтер базасы мен код арасында деректерді жылжыту міндетін жеңілдету үшін және керісінше бағдарламалардың тұтас класы пайда болды — ORM (Object-Relational Converter) -. Атап айтқанда, үш танымал Java API, Hibernate, TopLink және JPA (Java Persistence API) (Ресурстарды қараңыз), олардың ешқайсысы тамаша болмаса да, бұл мәселені шешуге тырысады. Бұл мәселе соншалықты тұрақты (ойланған) және оның тіпті өз атауы бар: объект-қатынастық кедергінің сәйкессіздігі (Ресурстарды қараңыз).

GORM — Гибернация үстіндегі жұқа Groovy қасбеті. (Шамасы, «Гибернат» жасаушыларға «ГОРМ» сияқты үйлесімді емес болып көрінген). Бұл Hibernate үшін бар барлық трюктердің осында жұмыс істейтінін білдіреді; мысалы, HBM файлдарына түрлендіру және аннотация үшін толық қолдау көрсетіледі. Дегенмен, бұл мақала GORM әкелетін қызықты жаңа мүмкіндіктерге назар аударады.
Объектілі-бағытталған деректер қорлары және грильдер

Кейбір әзірлеушілер объектілерді табиғи жолмен қолдайтын дерекқорларды пайдалану арқылы «нысанға қатысты сәйкессіздік» мәселесін жоюға тырысады. Тед Ньюардтың developerWorks сайтындағы db4o серияларына арналған бос емес Java әзірлеушісінің нұсқаулығы осы тақырыпты жақсы қамтып, іс жүзінде заманауи объектіге бағытталған құрылымдарды көрсетеді. Кейбір J2EE программисті Grails үшін db4o плагинін жазып, объектілі-бағытталған дерекқорлардың реляциялық аналогтары сияқты кәсіби пайдалануға дайын екенін дәлелдесе, тамаша болар еді. Дегенмен, әзірге GORM және дәстүрлі реляциялық дерекқорды пайдалану нысандарды Grails-те тұрақты түрде сақтаудың ең жақсы стратегиясы болып табылады.

Бірден көп қарым-қатынас құру

POGO-ларды дерекқор кестелеріне сақтау бірінші көзқараста соншалықты үлкен мәселе болып көрінбейді. Шынында да, егер бір POGO нысаны бір кестемен салыстырылса, бұл қиын емес, POGO нысанының қасиеттері кестенің бағандарына өте жақсы сәйкес келеді. Бірақ егер нысан үлгісі біршама күрделі болса, мысалы, оның құрамында бір-бірімен қосылған екі POGO нысаны болса, тапсырма әлдеқайда күрделене түсуі мүмкін.

Мысалы, біз соңғы мақалада әзірлей бастаған Trip Planner қолданбасының веб-сайтын қарастырайық. Trip POGO қолданбасында маңызды рөл атқаратыны таңқаларлық емес. Файлды ашу Мәтін өңдегішінде grails-app/domain/Trip.groovy (1-тізімді қараңыз) ашыңыз: