# JPA: Entity "laden" und später updaten



## QDog (18. Apr 2008)

Hallo,

kann ich, wenn ich einer Klasse bin etwas direkt in "this" speichern, wenn es ein Objekt der selben Klasse ist?
Evtl. dumme Frage, aber folgender Fall:

Ich habe eine Klasse Lehrer, die gleichzeitig mein Entity ist. Nun hole ich mir ein vorher persistent gemachtes Obejekt über find wieder, aber möchte es nicht einfach zurückgeben, sondern habe eine Helfer-Methode direkt in der Lehrer-Klasse um einen Lehrer zu laden. So wie hier funktioniert das ja nicht, da er wohl nur eine Kopie macht und, wenn ich die update, macht JPA später gar nichts. Kann ich dort nicht einfach eine Referenz erstellen geht das in Java? Oder ist das allg. kein guter Ansatz?


```
public void load(int id) {
		Lehrer lehrer = em.find(Lehrer.class, id);
		this.setKurzform(lehrer.getKurzform());
		this.setName(lehrer.getName());
		this.setVorname(lehrer.getVorname());
		this.setLid(lehrer.getLid());

//    this = em.find(Lehrer.class, id); ???
	}
```


----------



## maki (18. Apr 2008)

Ähmm... ganz falsch.

load gehört nicht in deine Entity...


----------



## QDog (18. Apr 2008)

Wie wärs dann mit nem anderen vorschlag?


----------



## maki (18. Apr 2008)

Mein Vorschlag: Mehr lesen 

Nicht böse sein, aber deine Frage an sich stimmt nicht.

Weder ist es sinnvoll, das Objekt zu laden und dann die Werte manuell zu kopieren (du hast das Objekt doch schon..), noch sollte man imho sowas gleich in die Entity rein tun.

Wenn du keine Lust auf DAOs hast, mach doch sowas wie Repositories, welche von Entitäten und Services benutzt wird.

JPA bzw. ORM an sich ist alles andere als trivial, ist 'ne sehr steile lernkurve...

Hast du schon mit Datenbanken gearbeitet?
Kennst du dich mit OO aus?


----------



## QDog (18. Apr 2008)

Muss das "leider" von der Schule aus machen. mache seit 5 Jahren php und seit 2 jahren auch oo, dbs sind auch nicht mein Problem. 

Ja ich hab das Objekt schon, aber es dann einfach zurückgeben und dann außerhalb des Models, also im Controller bearbeiten und wieder speichern, mhh. Wozu gibts denn das entity dann?

Hatte die Idee, dass man dieses Lehrer Model dann instanziert, entwerder ne id im Kontruktor übergibt oder nicht und je nachdem, das Model also die entity befüllt bekommt oder eben ein neues anlegt.


----------

