Grails

webes keretrendszer

A Grails egy nyílt forráskódú webes keretrendszer, mely a Java platformra illetve a Groovy nyelvre épül.

Grails
Grails logo.png

Legfrissebb stabil
kiadás
3.2.7
(2017. március 6.)
Legfrissebb fejlesztői kiadásismeretlen +/-
Programozási nyelv Groovy
Operációs rendszer platformfüggetlen
Kategória webes keretrendszer
Licenc Apache Software License 2.0
A Grails weboldala

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.

A projekt eredeti neve 'Groovy on Rails' volt, de 2006 márciusában David Heinemeier Hansson, a Ruby on Rails alkotójának kérésére átkeresztelték az informálisan már egyébként is használt rövidebb Grails névre.[1]

ArchitektúraSzerkesztés

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

A Grails keretrendszer az MVC mintát használja.

Modell (Model)Szerkesztés

A modell az adatokat reprezentálja. A domain osztályok konvenció szerint a grails-app/domain/ könyvtárban vannak.

Nézet (View)Szerkesztés

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 technológiákat. Az elnevezési konvenciót követve a grails-app/views/cow/list.gsp fájlba 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

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. A vezérlő tipikus művelete például az összes példány listázása.

PerzisztenciaSzerkesztés

A Grails-ben az alkalmazásfejlesztő csak a domain osztályokat definiálja, a perzisztencia a keretrendszer dolga. A Grails perzisztenciakezelője a GORM (Grails Object Relational Mapping), ami 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ódusokSzerkesztés

A GORM által kezelt domain osztályok rendelkeznek a következő statikus 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ódusokSzerkesztés

A GORM által kezelt domain osztá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égSzerkesztés

JegyzetekSzerkesztés

  1. Dropping Groovy on Rails name. [2007. november 7-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 15.)
  2. Grails Object Relational Mapping (GORM). [2008. május 9-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. február 14.)
  3. Domain Class Dynamic Methods & Properties. [2008. május 14-i dátummal az eredetiből archiválva]. (Hozzáférés: 2008. szeptember 15.)

IrodalomSzerkesztés

Külső hivatkozásokSzerkesztés