Unterschied @Id und @Access?

JavaCat++

Mitglied
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:

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:

mrBrown

Super-Moderator
Mitarbeiter
@ID und @Access(FIELD) sagen in dem Fall das gleiche aus, Zugriff direkt aufs Feld und nicht über Get/Setter - außer für den Vornamen, weil es da explizit anders angegeben ist.

Eine Unterklasse von Kunde kann (vor JPA 2.0) den Zugriff nicht ändern, da er ja durch das @ID festgelegt ist.
Mit 2.0 kann sowohl die Klasse selbst als auch deren (überschriebenen) Get/setter mit @access annotiert werden, und somit kann es anderen Zugriff als in der Oberklasse geben.
 

JavaCat++

Mitglied
OK Danke. Nur wie ist es, wenn ich im obigen Beispiel nur das @Id stehen lassen würde und die @access alle entfernen würde? Wie würden dann vor- und nachname angesprochen werden? Ist der Default dann über die getter/setter oder über das Attribut?
 

mrBrown

Super-Moderator
Mitarbeiter
@access alle entfernen würde? Wie würden dann vor- und nachname angesprochen werden? Ist der Default dann über die getter/setter oder über das Attribut?[/QUOTE]
über die Attribute, da das @Id ja am Attribut steht ;)
 

JavaCat++

Mitglied
Achso, ich dachte @Id bezieht sich dann nur auf das Attribut id :) Dann hat sich auch meine zweite Frage erledigt, dass man @Id auch über der Klasse Kunde hätte schreiben können, so wie es accessType.field macht, um der JPA zu sagen, dass er alles über die Attribute ansprechen kann. Aber so wenn ich jetzt darüber nachdenke, würde das ja auch keinen Sinn machen, dann würde die JPA ja gar nicht, was der Primary Key sein sollte. :/ Ok, ich denke ich habs verstanden. :)
 

mrBrown

Super-Moderator
Mitarbeiter
Richtig - ID muss am Attribut oder an der Methode stehen, und das legt den Zugriff fest. Und den Zugriff kann man eben mit @access überschreiben ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Mongodb Unterschied MongoClient und Repository. Datenbankprogrammierung 3
D Unterschied merge() und persist Datenbankprogrammierung 3
G Unterschied zwischen JPA und Hibernate? Datenbankprogrammierung 1
S Unterschied JavaDB JDBC? Datenbankprogrammierung 5
Tom#234 Jakarta Web Service SQL Access Error Datenbankprogrammierung 7
H Datenbankverbindung zu MS Access Datenbankprogrammierung 4
G Connect zu ACCESS-DB mit Ucanaccess Datenbankprogrammierung 11
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
MaxG. Access Datenbank Datenbankprogrammierung 48
I Access Datenbank in Table einlesen lassen Datenbankprogrammierung 2
D UCanAccess / MS Access - Tabelle / Spalte vorhanden Datenbankprogrammierung 3
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
W Access DB Metainfo hinzufügen Datenbankprogrammierung 8
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
S HSQLDB Zugriff auf Access Datenbank Datenbankprogrammierung 0
Neumi5694 MS Access Sicherheit entfernen Datenbankprogrammierung 0
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
L mdb (access) ansteuern: Welcher weg ist der Beste Datenbankprogrammierung 3
D Java MS Access Verbindung Datenbankprogrammierung 10
Neumi5694 MS Access Tabellenbesitzer ändern Datenbankprogrammierung 0
V Datenbank Access einbinden Datenbankprogrammierung 11
A Verbindung mit Access 2007 Datenbank herstellen Datenbankprogrammierung 1
Neumi5694 Java + MS Access + 64 Bit = Fehler -1073740777 Datenbankprogrammierung 2
R MS-Access mit JAva auslesen Datenbankprogrammierung 7
J Verbindung zu Access Datenbank Datenbankprogrammierung 15
Gossi MySQL Access denied Datenbankprogrammierung 11
J Access Datenbank mit JAVA erstellen - boolean Werte Datenbankprogrammierung 4
M Datenbankverbindung Access Datenbankprogrammierung 3
F Insert into Access Datenbankprogrammierung 3
C Access Datenbankprogrammierung 2
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
H Microsoft Access Treiber wird nicht gefunden Datenbankprogrammierung 9
T Datenbankverbindung access funtioniert nicht Datenbankprogrammierung 21
E Access Datenbank, Linux Umgebung Datenbankprogrammierung 4
E Access Datenbank mit Insert befüllen Datenbankprogrammierung 5
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
M Access Abfrage mit Parameter & Access/Java liefern unterschiedliche Ergebnisse Datenbankprogrammierung 2
M Access Datensatz beinhaltet ESC-Zeichen Datenbankprogrammierung 3
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
K Access Datenbank mit Java auf win7 64bit Datenbankprogrammierung 14
S Access 2007 zugreifen- ODBC Driver Manger Datenbankprogrammierung 3
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
F Zugriff auf MS Access-Datenbank mit jackcess Datenbankprogrammierung 10
P Access Datenbank durchsuchen Datenbankprogrammierung 8
M Problem mit Hibernate und Access Datenbankprogrammierung 9
S Datenbankapplikation von Access -> Java Datenbankprogrammierung 18
B MAC Access Datenbank in Java verwenden - Treiberproblem Datenbankprogrammierung 2
J mit java in access DB über odbc/jdbc Datenbankprogrammierung 2
NoXiD Access Datenbank in java einbinden ohne ODBC treiber zu erstellen Datenbankprogrammierung 5
C MS Access und Jarkarta POI Datenbankprogrammierung 4
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
Q Access Datenbank in eine Internetseite einbinden Datenbankprogrammierung 2
H java.sql.SQLException: Access denied for user 'root'@'localhost' (using password : YES) Datenbankprogrammierung 1
M Zugriff auf eine Access-Datenbank innerhalb eines jar-Files Datenbankprogrammierung 7
N Wie kann ich Zugriff auf eine MS Access DB (mit JDBC) über Netzwerk erreichen? Datenbankprogrammierung 7
M Spaltennamen einer MS Access Tabelle ermitteln Datenbankprogrammierung 3
F Zugriff auf MS Access DB Datenbankprogrammierung 3
T Problem beim Update in die Access DB Datenbankprogrammierung 9
M Tabelle in Access Datei mit JDBC generieren Datenbankprogrammierung 3
C MySQL langsamer als MS ACCESS Datenbankprogrammierung 5
J Zugriff auf Access-Datenbank Datenbankprogrammierung 3
S Connection String MS Access mit Systemdatenbank / Arbeitsgruppeninformationsdatei Datenbankprogrammierung 4
X JDBC und MS-Access Sicherheitslücken? Datenbankprogrammierung 4
N mehrere Abfragen nacheinander wie mit MS Access mit JAVA Datenbankprogrammierung 3
G "Adapter" Access -> MySQL? Datenbankprogrammierung 6
J Java DB Zugriff auf Access (Migration auf andere DB) Datenbankprogrammierung 8
H Fehler mit ". Microsoft Access Driver" Datenbankprogrammierung 12
K Java JDBC Access Datenstruktur Datenbankprogrammierung 2
V Überprüfen ob Tabelle existiert in Access per ODBC Datenbankprogrammierung 2
S Access vom Programm aus starten Datenbankprogrammierung 8
V Tabelle kopieren (Superbase -> Access) Datenbankprogrammierung 1
G Java und Access? Datenbankprogrammierung 3
D Problem mit Access abfrage Datenbankprogrammierung 10
D Access Datenbank in .jar-Datei Datenbankprogrammierung 51
J Insert auf Access DB funktioniert nicht Datenbankprogrammierung 5
E Wie auf MS-Access DB zugreifen? Datenbankprogrammierung 8
M Access Datenbank ! Datenbankprogrammierung 5
M Hilfe -Access mag sein Replace nciht merh Datenbankprogrammierung 2
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
U MS Access reservierte Wörter Datenbankprogrammierung 2
S Fehler bei DB Verbindung Access Datenbankprogrammierung 6
B Platzierung einer Access Datenbank Datenbankprogrammierung 4
V MS Access DB - Schreibschutz deaktivieren Datenbankprogrammierung 3
S PreparedStatements, Abfrageoptimierung unter MS Access Datenbankprogrammierung 5
S Java Access Arbeitsgruppendatei Datenbankprogrammierung 2
S Zugriff auf eine große Datenmenge von MS Access per JDBC Datenbankprogrammierung 11
S Access und Java, aber wie? Datenbankprogrammierung 4
N Hilfe ! Mein Applet bekommt ein Access-Denied von MySQL Datenbankprogrammierung 7
G Doppeleinträge in Access auf anderem Weg verhindern. Datenbankprogrammierung 4
D An Access Datenbank andocken ohne sie beim System anzumelden Datenbankprogrammierung 3
D String[][] Array in Access Datenbank speichern Datenbankprogrammierung 5
T Zugriff auf MS-Access-DB ist grottenlangsam. Normal? Datenbankprogrammierung 9
N Probleme mit Access-DB bei einem Webserver Datenbankprogrammierung 5
H Hibernate vs. MS Access Datenbankprogrammierung 7
G Suchen nach Autowerten in Access-DB Datenbankprogrammierung 20
B JDBC Verbindung zu Access Datenbank Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben