# Hibernate EJB3



## Sanix (17. Jul 2007)

Hallo,
Ich habe mir überlegt mich mal ein bisschen mit dem Hibernate Framework auseinander zu setzen. Jetzt zuerst einmal eine Frage:
Ich habe auf DB Seite 2 Tabellen. Ich habe eine Klasse, die eine Referenz auf ein andere Klasse hat. Diese 2 Klassen entsprechen genau den 2 Tabellen. Dieses Hibernate SQL unterstützt ja left joins, doch ist es möglich mit einer Abfrage, gleich beide Klassen "zu füllen"?
Macht es Sinn, eine Klasse mit weiteren Methoden zu versehen, für den späteren Gebrauch oder sollte das Objekt rein Getter und Setter haben, die den Tabellen entsprechen? Zum Beispiel:

setter und getter für var gehalt
Jetzt füge ich eine Methode hinzu  getJahresGehalt, welche nichts mit der Datenbankstruktur zu tun hat. Ist das eine gute Art oder sollte man die ganzen Werte weiterkopieren? Was eigentlich sinnfrei ist.


----------



## Rydl (17. Jul 2007)

klar kannst du da noch mehr funktionen reinmachen, die dir summen oder ähnliches zurückgeben.



			
				Sanix hat gesagt.:
			
		

> Dieses Hibernate SQL unterstützt ja left joins, doch ist es möglich mit einer Abfrage, gleich beide Klassen "zu füllen"?


versteh nicht ganz was du meinst, aber wenn du ne hibernate query absetzt, bekommst du meist ein resultset zurück, eine liste mit gefundenen objekten und die müssen, soweit ich weiß, auf dein mapping passen...

was du aber eigentlich willst, ist eine one-to-many beziehung herstellen oder?


----------



## semi (17. Jul 2007)

Sanix hat gesagt.:
			
		

> Hallo,
> Ich habe mir überlegt mich mal ein bisschen mit dem Hibernate Framework auseinander zu setzen. Jetzt zuerst einmal eine Frage:
> Ich habe auf DB Seite 2 Tabellen. Ich habe eine Klasse, die eine Referenz auf ein andere Klasse hat. Diese 2 Klassen entsprechen genau den 2 Tabellen. Dieses Hibernate SQL unterstützt ja left joins, doch ist es möglich mit einer Abfrage, gleich beide Klassen "zu füllen"?


Ja.


			
				Sanix hat gesagt.:
			
		

> Macht es Sinn, eine Klasse mit weiteren Methoden zu versehen, für den späteren Gebrauch oder sollte das Objekt rein Getter und Setter haben, die den Tabellen entsprechen? Zum Beispiel:
> 
> setter und getter für var gehalt
> Jetzt füge ich eine Methode hinzu  getJahresGehalt, welche nichts mit der Datenbankstruktur zu tun hat. Ist das eine gute Art oder sollte man die ganzen Werte weiterkopieren? Was eigentlich sinnfrei ist.


Es ist i.d.R. besser Businesslogik und Persistenz zu trennen. Klartext: Wenn es nicht gerade um die Konvertierung 
eines bestimmten Typen in einen anderen geht etc., lieber nicht innerhalb der Bean.
Andererseits vermute ich mal, dass du das Jahresgehalt anhand von Festgehalt + Variabler Anteil + Lohn für sonstige 
sexuelle Gefälligkeiten :lol: berechnen willst. Da könnte man streiten. Ich würde es ausserhalb berechnen. 
Denke an folgende Situation. In einer Version machst du die Berechnung auf die eine Art, dann kommt mit einer 
neuen Version etwas hinzu. Die alte Anwendung soll aber nach wie vor so funktionieren, wie gehabt. Hast du es fest 
in die Beans geschrieben, hast du ein Problem. Sowas wie Gehalt wird i.d.R. sowieso getrennt gespeichert (Gehaltstabellen etc.).


----------

