1. #1
    Curahee Q's Avatar
    Registered
    07/12/07
    Location
    Hoogstraten
    Posts
    854
    iTrader
    0
    Mentioned
    0 Post(s)

    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 bedankt
    no votes  

  2. #2
    SideShow's Avatar
    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  

  3. #3
    Moto's Avatar
    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  

  4. #4
    Emerxill's Avatar
    Registered
    17/07/02
    Location
    Hasselt
    Posts
    2,970
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/18
    Quote Originally Posted by Moto View Post
    This quote is hidden because you are ignoring this member. Show
    Zijn er in Java ondertussen geen betere ORM's dan hibernate?
    ga ens terug naar de .NOT threads aub.
    Als ge niet snapt hoe Hibernate werkt moet ge er hier niet op komen afgeven.

    @TS hoe zien uw klassen Student en Klas (en hun mappings) eruit?
    If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization
    no votes  

  5. #5
    Curahee Q's Avatar
    Registered
    07/12/07
    Location
    Hoogstraten
    Posts
    854
    iTrader
    0
    Mentioned
    0 Post(s)
    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  

  6. #6
    Emerxill's Avatar
    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 civilization
    no votes  

  7. #7
    Just me's Avatar
    Registered
    24/07/02
    Location
    Oelegem
    Posts
    349
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/1
    Quote Originally Posted by Emerxill View Post
    This quote is hidden because you are ignoring this member. Show
    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.
    Dit bestaat toch al weg? Ik meen mij te herinneren dat Hibernate validator kan kan.
    no votes  

  8. #8
    Moto's Avatar
    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

    Dankzij "convention over configuration" kun je in sommige gevallen annoations weg laten
    Teveel Conventions + Nieuwe developer = ?????
    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.

    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
    Ben nu ook niet direkt een voorstander van constraints in annotations, probleem is dat men dan
    - 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

    Een ander nadeel van annotations tov xml is dat je opnieuw mag compileren als je iets aanpast
    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 kiezen

    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  

  9. #9
    Jerre Muesli's Avatar
    Registered
    08/09/02
    Location
    -
    Posts
    2,044
    iTrader
    9 (100%)
    Mentioned
    0 Post(s)
    Reputation
    3/6
    Quote Originally Posted by Just me View Post
    This quote is hidden because you are ignoring this member. Show
    Dit bestaat toch al weg? Ik meen mij te herinneren dat Hibernate validator kan kan.
    Hibernate validator is gewoon de implementatie van JSR 303.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in