Introduktion til Grails – del 2 - Model

Tags:    grails hjemmeside database groovy
<< < 123 > >>
Skrevet af Bruger #5097 @ 19.08.2011


Domain relationer


På større sider er det atypisk at domænerne alle er uafhængige af hinanden. Ofte har de relationer af hinanden. Dette varierer naturligvis afhængig af hvad din domæner repræsenterer. Der findes tre typer af relationer: one-to-one, one-to-many, many-to-many. Alle disser understøtter Grails, og gør lettet meget lettere for os.

Den simples relation er one-to-one:

One-to-one relation
Et eksempel på sådan en relation kan være to klasser. En der repræsentere en mand og en der repræsenterer en pige:
Ved partnerskab kan der være en relation imellem manden og damen. Og da vi i denne model ikke tillader manden eller kvinden af have flere partnere, kan vi med fornuft repræsenterer dette som en one-to-one relation.

Metoden at kode dette er logisk og fuldstændig som forventet:

Fold kodeboks ind/udJava kode 


Dette ligner hvad vi kender, og vi beskæftiger os derfor ikke yderligere med dette. Hvis det ønsket kan man naturligvis også lade relationen kun gå den ene vej.

I mange af situationerne har man også et forhold hvor det ene objekt er ejer af den anden Havde manden i eksemplet ovenfor en hund, har man sådan en relation. I sådan et tilfælde kan man benytte den statiske property belongsTo:
Fold kodeboks ind/udJava kode 


eller ved relationer begge veje:
Fold kodeboks ind/udJava kode 


Her er ”[mand:Mand]” et map, hvor ”mand” er nøglen. Det smarte ved sådan en relation er at slettes ejer-objektet så slettes også alle de objekter "høre til" det objekt. I dette eksempel vil hunden altså også blive slettet, hvis man vælger at slette manden.



One-to-many relation
Denne type af relationer bruges, som navnet siger, i situationer hvor den ene relation har forbindelser til mange andre objekter, kun har en pointer tilbage den den. Et eksempel på dette kan være et domæne som repræsenterer en cd og et domæne som repræsenterer en sange:
Et album indeholder mange sange, men en sang findes kun på et album. Derfor kan en one-to-many relation med fornuft benyttes her.

Koden til relationen i koden vil se således ud:
Fold kodeboks ind/udJava kode 


Genereres et view nu vil vi bemærke at man nu kan vælge et album en sang høre til, når vi opretter en sang:



One-to-many
På næsten samme måde kan du lave en many-to-many relation. Et eksempel på sådan en relation vil forekomme imellem lærere og elever på en skole. Dette skyldes at en elev kan have mere end en lære, og at en lære tilsvarende ofte har mere end en elev:

Fold kodeboks ind/udJava kode 


Bemærk at der også her kræves af domænerne tilhører en anden (belongsTo). Dette er der brug for når Grails laver mapping (dvs læser og gemmer fra databasen).

Afslutning


Vi har nu i denne artikel gået nærmere i dybden med hvorledes du opbygger din model. Som altid skal det dog siges at dette kun er en artikel, og at der utallige urørte emner inden for modellen, som jeg ikke har valgt at berører. Er du interesseret i at vide mere, kan det derfor abefagles at læse videre på egen hånd.

Hvis alt går vel vil der snart komme en del 3 som vil gå i dybden ved controlleren. Så stay tuned :).

Jeg håber artiklen har kunnet hjælpe. Held og lykke



<< < 123 > >>

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (3)

User
Bruger #4487 @ 19.08.11 23:17
Lovely.... Denne artikel var længe ventet :P Tak!!!
User
Bruger #4487 @ 24.11.11 23:34
Hej Theis

Er der en tredje del i trykken?

\ Martin
User
Bruger #5097 @ 27.11.11 21:46
Hey og tak for at du kan lide det. Lige pt ikke, men hvis jeg får tid. Måske i starten af januar...

I øvrigt er jeg informeret om at der nok er nogle ukorrektheder omkring many-to-many relationer. Jeg har ikke lige tid til at kikke på det nu, men det afsnit kan det anbefales evt at få dobbeltchecket hvis der er brug for.
Du skal være logget ind for at skrive en kommentar.
t