Thread: jHibernate one-to-many update
-
05-03-2012, 15:11 #1
jHibernate one-to-many update
Beste 9livers
Ik in mijn database een 1-op-veel relatie die ik met hibernate map naar de java-klasse.
Een klas heeft meerdere studenten en een student hoort juist toe tot 1 klas.
Dus in Java resulteert dit tot een List van Student objecten. Maar in de database heeft de student een vreemde sleutel klasId.
Het mappen gaat goed en dat werkt al. Maar er zijn ook niet toegekende studenten met als klasId de value NULL. In mijn java programma kan ik dan studenten toewijzen aan een bepaalde Klas. Dit updaten in de database gaat goed. Ik doe gewoon een update(Klas) en in de database wordt de id juist gewijzigd.
Maar wanneer ik een student verwijder uit zijn klas en ik een update doe blijft in de database het klasId ongewijzigd. Dit zou terug naar NULL moeten gaan zodat deze student in geen klas zit. Hoe kan ik dit nu verwezenlijken met hibernate?
Alvast bedanktno votes
-
-
05-03-2012, 17:45 #2Approved 9liver
- Registered
- 21/08/02
- Location
- Roeselare
- Posts
- 4,474
- iTrader
- 15 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 1/35
Heeft dit niet te maken met de inverse property in je mapping?
In je eerste geval (update(klas)) vertrek je van het parent object
In je tweede geval wil je vanaf je child een relatie wijzigen
Ben nog maar pas met hibernate begonnen, dus helemaal niet zeker
no votes
-
07-03-2012, 14:44 #3Member
- Registered
- 17/07/02
- Location
- Wilrijk
- Posts
- 1,994
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 9/16
Zijn er in Java ondertussen geen betere ORM's dan hibernate?
no votes
-
07-03-2012, 15:37 #4Member
- Registered
- 17/07/02
- Location
- Hasselt
- Posts
- 2,970
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/18
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilizationno votes
-
07-03-2012, 19:40 #5
Het is ondertussen al opgelost. Er was iets fout gegaan in het doorsturen van mijn objecten. Aangezien ik nog maar net begonnen ben met Hibernate dacht ik dat het daar aan lag.
Is het trouwens aangeraden om met xml te werken voor de mapping of met annotations? Ik vind annotations precies een beetje codevervuiling. Met xml hou ik alles mooi gescheiden. Iemand die hier wat op te zeggen heeft?no votes
-
07-03-2012, 20:27 #6Member
- Registered
- 17/07/02
- Location
- Hasselt
- Posts
- 2,970
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/18
Annotations zijn geen codevervuiling

Nee, persoonlijk ben ik voorstander van annotations.
Waarom?
Zo zie je in één oogopslag de mapping van uw object al je erin aan't werken bent. En het is net de bedoeling vind ik dat die dingen mooi samen zitten.
Dankzij "convention over configuration" kun je in sommige gevallen annoations weg laten en weet je dat het framework standaard bepaalde zaken op een bepaalde manier gaat configureren (nogal vaag beschreven, ik weet het). Maar ik heb een beetje een haat-liefde verhouding met die "convention over configuration" ...
Een tekortkoming aan annotations is dat je niet op een eenvoudige manier aan hun parameters kunt. Bijv wanneer je een constraint op de lengte van een kolom hebt gelegd, dan zou het handig zijn dat je die constraint uit de annotation kon halen om zo je object te valideren.
Daarnaast oogt het voor een relatief simpel projectje als dat van jou mooi gescheiden. Maar bij complexere projecten met bijv 50 entity-objecten is dat al minder plezant.
Als je dan nog eens bijv. Spring gaat gebruiken, wat ook configuratie in xml is (meerdere files afhankelijk van welke modules je gebruikt) als je geen annotations wil gebruiken...
Zo is de term "metadata-hell" ontstaan
Daarom dat men blij is dat annotations uitgevonden zijn.
Een ander nadeel van annotations tov xml is dat je opnieuw mag compileren als je iets aanpast.
Daarom zou ik persoonlijk goed nadenken om named queries in annotations te duwen. Aangezien die wel regelmatig durven te veranderen (bijv bij performance aanpassingen)If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilizationno votes
-
07-03-2012, 23:36 #7no votes
-
08-03-2012, 00:07 #8Member
- Registered
- 17/07/02
- Location
- Wilrijk
- Posts
- 1,994
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 9/16
annotations zijn zeker beter dan de xml-files
Teveel Conventions + Nieuwe developer = ?????Dankzij "convention over configuration" kun je in sommige gevallen annoations weg laten
Ipv de convention, een annotation zetten voegt geen extra complexiteit toe aan uw code maar maakt uw code direkt leesbaarder voor nieuwe developers die niet elke conventie kennen.
Ben nu ook niet direkt een voorstander van constraints in annotations, probleem is dat men danEen tekortkoming aan annotations is dat je niet op een eenvoudige manier aan hun parameters kunt. Bijv wanneer je een constraint op de lengte van een kolom hebt gelegd
- Validatie op meerdere plaatsen heeft (bv length in annotation rest in een class)
- De validatie dan enkel in de annotation wilt hebben (hopen custom framework code, geen ROI)
- Foutmeldingen in de annotation erbij steken -> probleem met vertalingen
- Objecten kunnen meerdere statussen hebben met aparte validatie
Het is eigenlijk andersom, ge moet tijd investeren in deftig ALM om makkelijk een nieuwe versie te deployen, dit mag zeker geen argument zijn om voor XML te kiezenEen ander nadeel van annotations tov xml is dat je opnieuw mag compileren als je iets aanpast
Een goede presentatie om eens te kijken als programmeur en zeker als ge Hibernate gaat doen is deze -> Simple-Made-Easy van de maker van Clojure
en ja Hibernate is niet "Simple" maar "Easy"no votes
-
08-03-2012, 23:03 #9Member
- Registered
- 08/09/02
- Location
- -
- Posts
- 2,044
- iTrader
- 9 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 3/6
no votes

ga ens terug naar de .NOT threads aub. 