Grails

A Wikipédiából, a szabad enciklopédiából
Grails
Grails logo.png

Legfrissebb stabil
kiadás
1.3.7
(2011. február 17.)
Legfrissebb fejlesztői kiadás ismeretlen +/-
Programozási nyelv Groovy
Operációs rendszer platformfüggetlen
Kategória webes keretrendszer
Licenc Apache Software License 2.0
A Grails weboldala

A Grails egy nyílt forráskódú webes keretrendszer, ami a Groovy nyelvre, tehát közvetve a Java platformra alapul.

A Grails korábbi neve 'Groovy on Rails' volt, de 2006 márciusában megváltak attól a névtől David Heinemeier Hansson, a Ruby on Rails alkotójának kérésére.[1]

A fejlesztés 2005 júliusában kezdődött, a 0.1 verzió 2006 március 29-én jelent meg, az 1.0 verzió 2008 február 18-án.

Architektúra[szerkesztés | forrásszöveg szerkesztése]

grails-app/domain/Cow.groovy
 class Cow {
  String name
  String color
 }

A Grails keretrendszer a modell-nézet-vezérlő (Model-View-Controller – MVC) mintát használja.

Modell (Model)[szerkesztés | forrásszöveg szerkesztése]

A modell az adatokat reprezentálja. A tartomány-osztályok konvenció szerint a grails-app/domain/ mappában vannak. Egy egyszerű tartományosztály reprezentálhat például teheneket.

Nézet (View)[szerkesztés | forrásszöveg szerkesztése]

A nézetek az adatokat jelenítik meg a felhasználók felé, illetve felhasználói interakciókat fogadnak. Mivel a Grails webes keretrendszer, a nézetek weboldalként jelennek meg. A Grails támogatja a JSP és a GSP formátumokat. Az elnevezési konvenciót követve a grails-app/views/cow/list.gsp fájlban kerül az a nézet, amely a CowController vezérlő list akciójához tartozik. Az elnevezések alapján a keretrendszer automatikusan elvégzi a hozzárendelést. Az alábbi példa egy GSP-ben írt nézetet mutat:

grails-app/views/cow/list.gsp
<html>
  <head>
    <title>Teheneink teljes listája</title>
  </head>
  <body>
    <h2>Teheneink teljes listája</h2>
    <ul>
      <g:each in="${cows}">
        <li>${it.name} (${it.name})</li>
      </g:each>
    </ul>
  </body>
</html>

Vezérlő (Controller)[szerkesztés | forrásszöveg szerkesztése]

grails-app/controllers/CowController.groovy
 class CowController {
    def list = {
       [ cows: Cow.findAll() ]
    }
 }

A vezérlők állítják elő a nézetektől kapott felhasználói inputok alapján a megjelenítendő adatszerkezeteket a nézetek számára. A konvenció szerint a vezérlők a grails-app/controllers/ mappában vannak. Egy jellemző művelet lehet a vezérlőben az összes példány listázása.

Perzisztencia[szerkesztés | forrásszöveg szerkesztése]

A Grails-ben az alkalmazásfejlesztő csak a tartományosztályokat definiálja, a perzisztencia a keretrendszer dolga. A Grails perzisztenciakezelője a GORM (Grails Object Relational Mapping), ami a a Hibernate perzisztáló mechanizmusára épít. Minden osztályhoz automatikusan hozzárendeli az id és a version adatmezőket és generálja a perzisztáláshoz szükséges metódusokkal.[2][3]

Osztálymetódusok[szerkesztés | forrásszöveg szerkesztése]

A GORM által kezelt tartományosztályok rendelkeznek a következő osztályszintű (static) metódusokkal.

metódus magyarázat példa
count() Az adott osztályból tárolt rekordok száma az adatbázisban.
def cowCount = Cow.count()
exists() Igazat ad vissza, ha létezik adott típusú rekord.
def cowExists = Cow.exists(1)
find() Visszaadja a feltételnek megfelelő első rekordot.
def cow = Cow.find("from Cow c where c.color = ?", [ 'Lila' ])
findAll() Visszaadja a feltételnek megfelelő rekordok listáját.
def cows = Cow.findAll("from Cow c where c.color = ?", [ 'Lila' ])
findBy*() Visszaadja a mintának megfelelő első rekordot.
def cow = Cow.findByColor("lila")
findBy*Like() Visszaadja a mintának megfelelő első rekordot.
def cow = Cow.findByColorLike("li%")
findAllBy*() Visszaadja a mintának megfelelő rekordok listáját.
def cows = Cow.findAllByColor("lila")
findAllBy*Like() Visszaadja a mintának megfelelő rekordok listáját.
def cows = Cow.findAllByColorLike("li%")
findWhere() Visszaadja az első olyan rekordot, ami megfelel a feltételeknek.
def cow = Cow.findWhere(color:"lila")
A lekérdezőnyelv szintaxisa HQL (Hibernate Query Language).

Példánymetódusok[szerkesztés | forrásszöveg szerkesztése]

A GORM által kezelt tartományosztályok példányváltozói mindig rendelkeznek a következő perzisztáló metódusokkal:

Metódus Magyarázat Példa
save() Menti az adott rekordot adatbázisba.
cow.save()
delete() Törli az adott rekordot adatbázisból.
cow.delete()
refresh() Aktualizálja az adott rekord állapotát az adatbázisból.
cow.refresh()
ident() Visszaadja az rekord azonosítóját az adatbázisból.
cow.ident()

Lásd még[szerkesztés | forrásszöveg szerkesztése]

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

Irodalom[szerkesztés | forrásszöveg szerkesztése]

Brown, Jeff & Rocher, Graeme (January 15, 2009), The Definitive Guide to Grails (2nd ed.), Apress, pp. 648, ISBN 1590599950, <http://www.apress.com/book/view/1590599950>

Smith, Glen & Ledbrook, Peter (June 28, 2009), Grails in Action (1st ed.), Manning Publications, pp. 520, ISBN 1933988932, <http://www.manning.com/gsmith/>

Dickinson, Jon (May 27, 2009), Grails 1.1 Web Application Development (1st ed.), Packt Publishing, pp. 328, ISBN 1847196683, <http://www.packtpub.com/grails-1-0-web-application-development/book>

Abdul-Jawad, Bashar (December 2, 2008), Groovy and Grails Recipes (1st ed.), Apress, pp. 424, ISBN 143021600X, <http://www.apress.com/book/view/143021600X>

Fischer, Robert (April 20, 2009), Grails Persistence with GORM and GSQL (1st ed.), Apress, pp. 125, ISBN 1430219262, <http://www.apress.com/book/view/1430219262>

M. Judd, Christopher; Nusairat, Joseph Faisal & Shingler, Jim (June 18, 2008), Beginning Groovy and Grails: From Novice to Professional (1st ed.), Apress, pp. 440, ISBN 1430210451, <http://www.apress.com/book/view/1430210451>

Rudolph, Jason (February 6, 2007), Getting Started with Grails (1st ed.), Lulu.com, pp. 132, ISBN 143030782X, <http://www.infoq.com/minibooks/grails>

Külső hivatkozások[szerkesztés | forrásszöveg szerkesztése]