Guten Morgen,
ich muss michberuflich gerade sehr vielmit JPA beschäftigen und habe nun eine Frage zu @Id und @access.
Ich zitiere einfach mal sinngemäß aus dem Buch:
"Bei dem Zugriff auf die Daten eines Entitys muss zwischen dem Zugriff durch den JPA-Provider und dem Zugriff [...] des Anwendungsentwicklers unterschieden werden. Der JPA-Provider benötigt den Zugriff, um in die Datenbank schreiben zu können und analog um aus der Datenbank lesen und das Entity setzen zu können. Die Zugriffsart wurde in JPA 1.0 nur durch Position des @Id geregelt (entweder am Getter oder am Attribut).
Um einer Unterklasse eine andere Zugriffsart zu ermöglichen, aber auch um den Zugriff zu explizit zu machen, führte JPA 2.0 das@Access ein."
Nun folgendes Listing:
[...]
(Mehr ist nicht abgebildet)
Nun bin ich verwirrt: Das @Id sagt dem JPA-Provider einmal, dass das Attribut id der Primärschlüssel ist, aber auch auf das Attribute direkt zugreifen kann, ohne über die Setter-Methoden zu gehen (Daher ist keine Setter für die Abgebildet???). Da aber über der Klasse das AccessType.Field steht, wird @Id ja als Zugriff überschrieben und da es über der Klasse steht, kann der JPA-Provider nun alle Attribute direkt, ohne über die Setter und Getter zu gehen, ansprechen?Dies gilt aber nicht für den Getter des Vornames, weil das ein Access.PROPERTY hat.
Oder gilt der Access nur für die erbenen Unterklassen, wegen folgendem Satz "Um einer Unterklasse eine andere Zugriffsart zu ermöglichen, aber auch um den Zugriff zu explizit zu machen, führte JPA 2.0 das@Access ein" (s.o.).
Vielen Dank!
ich muss michberuflich gerade sehr vielmit JPA beschäftigen und habe nun eine Frage zu @Id und @access.
Ich zitiere einfach mal sinngemäß aus dem Buch:
"Bei dem Zugriff auf die Daten eines Entitys muss zwischen dem Zugriff durch den JPA-Provider und dem Zugriff [...] des Anwendungsentwicklers unterschieden werden. Der JPA-Provider benötigt den Zugriff, um in die Datenbank schreiben zu können und analog um aus der Datenbank lesen und das Entity setzen zu können. Die Zugriffsart wurde in JPA 1.0 nur durch Position des @Id geregelt (entweder am Getter oder am Attribut).
Um einer Unterklasse eine andere Zugriffsart zu ermöglichen, aber auch um den Zugriff zu explizit zu machen, führte JPA 2.0 das@Access ein."
Nun folgendes Listing:
Code:
@Entity
@Access(AccessType.FIELD)
public class Kunde {
@Id @GeneratedValue
private Integer id;
private String vorname;
Public String nachname;
@access(AccessType.PROPERTY)
public String getVorname() {
return this.name;
}
public STring setVorname (String vorname) {
this.vorname = vorname;
}
(Mehr ist nicht abgebildet)
Nun bin ich verwirrt: Das @Id sagt dem JPA-Provider einmal, dass das Attribut id der Primärschlüssel ist, aber auch auf das Attribute direkt zugreifen kann, ohne über die Setter-Methoden zu gehen (Daher ist keine Setter für die Abgebildet???). Da aber über der Klasse das AccessType.Field steht, wird @Id ja als Zugriff überschrieben und da es über der Klasse steht, kann der JPA-Provider nun alle Attribute direkt, ohne über die Setter und Getter zu gehen, ansprechen?Dies gilt aber nicht für den Getter des Vornames, weil das ein Access.PROPERTY hat.
Oder gilt der Access nur für die erbenen Unterklassen, wegen folgendem Satz "Um einer Unterklasse eine andere Zugriffsart zu ermöglichen, aber auch um den Zugriff zu explizit zu machen, führte JPA 2.0 das@Access ein" (s.o.).
Vielen Dank!
Zuletzt bearbeitet: