Play Framework – moduł CRUD

Jestem w trakcie tworzenia aplikacji „prosty bash.org w jeden dzień” i naciąłem się na ciekawego buga w PF 1.0 b833. Żeby zrozumieć skąd on się wziął należy trochę przybliżyć czym jest moduł CRUD w Play Framework.

CRUD Framework

Pod tą nazwą kryje się grupa frameworków, które udostępniają programistom zestaw narzędzi pozwalających na automatyczne tworzenie klas CrudDAO. Idea zakłada, że programista na przykład tworzy klasę modelu, która rozszerza klasę abstrakcyjną. Klasa abstrakcyjna dostarcza metod CRUD. Innym podejściem jest dynamiczne tworzenie metod i zapytań tak jak jest to realizowane w Grails. W każdym bądź razie w Play mamy do czynienia z pierwszą metodą. Opis tworzenia klas modelu znajdziecie tu.

CRUD w Play Framework

Jeżeli chcemy uruchomić moduł CRUD w Play Framework to w pliku application.conf należy od-komentować linijkę

Listing 1. uruchomienie modułu CRUD

module.crud=${play.path}/modules/crud

Następnie w pliku routes należy włączyć mapowanie do modułu CRUD:

Listing 2. konfiguracja mapowań

*      /admin              module:crud

No i gotowe. Należy jeszcze raz podpiąć projekt do naszego IDE. Od tego momentu pod adresem /admin/ mamy do dyspozycji całkiem zgrabny panel do zarządzania naszymi obiektami.

Jest jeden bug

Niestety w buildzie 833 jest bug. Otóż nie można posortować listy obiektów. Każda próba sortowania powoduje, że zawsze dostaniemy obiekty posortowane malejąco po id. Trochę do dupy… Na całe szczęście jest obejście. Moduł CRUD jak łatwo zauważyć dodał nam klasę CRUD i cały pakiet crud. Wystarczy zatem tak jak opisałem w zgłoszeniu zmienić trzy linijki.

I tyle. Generalnie CRUD z PF jest bardzo wdzięcznym podejściem do problemu i pozwala na szybkie i stosunkowo łatwe tworzenie modelu bez potrzeby kombinowania z kodem. Dostajemy na talerzu elegancki interfejs zarówno od strony programisty jak i użytkownika.

Napisz odpowiedź

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax