09 kwietnia 2009

Grails z MySQL

Ostatnimi czasy kilkakrotnie dotykałem tematu konfiguracji bazy danych, ale rozwiązania typu Grails skutecznie mnie wyręczały w zadaniu. Grails udostępnia wbudowaną bazę danych HSQL, więc poznawanie go nie musi pociągać za sobą poznawania konfiguracji bazy danych. Po prostu baza danych jest i można z niej korzystać. Wszelkie niuanse bazodanowe schodzą na drugi plan. Dodając do tego automatyczne tworzenie struktur bazodanowych z pomocą GORM (zDeeSeLowane JPA) i jedyne, o co musimy zadbać, to stworzenie klas dziedzinowych, które później odpowiednio związujemy ze sobą relacjami jeden-do-jednego, jeden-do-wielu lub wiele-do-wielu (wiele-do-jednego nie jest niczym innym w Grails, jak odwróceniem jeden-do-wielu - przeciwnie do JPA, w którym należy wykonać kilka dodatkowych czynności konfiguracyjnych).

Ta niewiedza bazodanowa zaczęła mi lekko doskwierać i kiedy podczas ostatniej prezentacji Grails na konferencji java4peple przyszło mi zaprezentować sposób tworzenia relacji z klasami dziedzinowymi...zawiesiłem się! Niesamowicie frustrujące i nawet, jeśli nie zostało to specjalnie zauważone, doszedłem do wniosku, że czas z tym skończyć. Jako "produkt" tego kończenia stworzyłem artykuł Grails z MySQL wprowadzający w świat konfiguracji bazy danych MySQL w Grails. W ramach artykułu tworzę przykładową aplikację grailsową z pojedynczą klasą dziedzinową i kontrolerem, który korzysta z dynamicznego rusztowania.

Jeśli większość z przedstawionych tutaj terminów nie brzmi znajomo, a w planach masz rozpoznanie Grails, warto zajrzeć do mojego nowego artykułu Grails z MySQL. Tym samym kończę z przedstawianiem Grails wyłącznie z perspektywy książki DGG2, jak proszono mnie od dawna (dzięki Radek H. za wytrwałość, a Marcinowi M. ślę specjalne podziękowania za ciągłe przywoływanie mnie do porządku, aby zamiast mydła i powidła zaprezentować w końcu coś naprawdę wartościowego ;-)). Uwagi mile widziane.

8 komentarzy:

  1. Dzięki! Jak zwykle miło poczytać o Grails na Twoim blogu ;).

    Ja za to mam nowinkę: java i groovy działają na Google App Engine, na razie tylko dla 10 tys. pierwszych osób, ale ma się to rozszerzać. Więcej, w komentarzach na http://blog.springsource.com/2009/04/07/write-your-google-app-engine-applications-in-groovy/ można wyczytać, że są już plany uruchomienia grails na tej platformie, co mogłoby przynieść spore korzyści grailsowej społeczności :)

    OdpowiedzUsuń
  2. Zapisałem się i cierpliwie czekam na bilet wstępu. Na pewno się pochwalę, jak już nadejdzie. Na razie pracuję na Mor.phie i dobrze byłoby to porównać z ofertą Amazonu i teraz Googla.

    OdpowiedzUsuń
  3. Aha, właśnie Ci psuję nauczyciela na Morphie;)
    Error 500: java.lang.NullPointerException
    Servlet: grails
    URI: /grails/sprawdzian/sprawdz.dispatch
    Exception Message:
    Caused by: java.lang.NullPointerException
    Class: SprawdzianController
    At Line: [17]
    Code Snippet:

    OdpowiedzUsuń
  4. Rzeczywiście Groovy na App Engine działa ;)

    Nie oczekuje współpracy Grails zbyt szybko. Wszystkie projekty zależne muszą dopracować polisy bezpieczeństwa i korzystanie z API.

    Wygląda na to, że bardziej zalecają korzystać z JDO niż z JPA. Oba mają też ograniczenia, niektóre zabawne. Jestem ciekaw, czy GORM postara się je obejść, czy po prostu niektóre zapytania nie będą działać.

    Pozdrawiam,
    Krzysiek

    OdpowiedzUsuń
  5. Warto moze dodac, ze w przypadku *juz istniejacego* modelu w bazie danych w dalszym ciagu mozna korzystac z udogodnien GORM.

    Pozdrawiam
    Michal Huniewicz

    OdpowiedzUsuń
  6. Tak, oczywiście. Pewnie będzie to tematem jednego z nadchodzących, moich doświadczeń z Grails i MySQL. Nie zamierzam zabawiać się z SQLem, ale może uda się znaleźć na sieci jakiś przykład w innej technologii, którą możnaby zmigrować do GORMa. Pomysły?

    OdpowiedzUsuń
  7. Moze cos na bazie WSDL, ale szczerze powiedziawszy nie wiem, jakby to mialo wygladac (gdzies mi sie obilo o uszy)...

    OdpowiedzUsuń
  8. A już myślałem, że to ja jestem jeden samotny z naleciałościami dziecka PHP i podłączam Grailsy pod MySQL :) Bardzo sympatyczny art.

    OdpowiedzUsuń