frage zu entities

allesklar

Mitglied
hi,

hab mal ne frage zu entities bzw den tabellen die dadurch erzeugt werden.

also wenn ich zb 2 Entities mit folgenden Attributen habe:

1. Customer
@id
private Long id;
private String name;
@OneToMany
private List<File> files;

2. File
@id
private Long id;
private String name;
@ManyToOne
private Customer customer;


Dann ergibt dass ja folgende Tabellen

Customer mit den Spalten: id, name
und
File mit den Spalten: id, name, customerID

aber wieso wird in der CustomerTabelle keine Spalte mit fileID oder so angelegt, welche zB die "Files" von jedem Customer speichert?
Oder sollte die eigentlich angelegt werden, aber ich mach irgendwas falsch?

Ich verwende NetBeans+Glassfish

lg
allesklar

edit: ups, hab falsches unterforum, bitte verschieben ;)
 
Zuletzt bearbeitet:

ARadauer

Top Contributor
aber wieso wird in der CustomerTabelle keine Spalte mit fileID oder so angelegt,
Weil es mehrere sein könnten. Was willst du den da rein schreiben? Eine Liste?

Also, wenn du doch ORM machst, solltest du dich einen sch**** interessieren wie gemappt wird, solange es funktioniert.
Nö is total uninteressant, wie das bottleneck nr1 seine sache macht... wenn ich zb 100 Mio Datensätze drinn habe...

Klar kann man sich auf JPA/Hibernate verlassen, aber ein bisschen sollte man sich schon Gedanken machen was da passiert... ja ja optimize later, blöd aber wenns dann zu spät ist und ich ein 2000 Stunden Refactoring über ein 100.000 Klassen Projekt machen muss dass in der Entwicklung 20 Mio gekostet hat...
 
M

maki

Gast
*verschoben*

aber wieso wird in der CustomerTabelle keine Spalte mit fileID oder so angelegt, welche zB die "Files" von jedem Customer speichert?
Weil das ein OneToMany Mapping ist, d.h. entweder die Files Tabelle müsste die Customer id aufnehmen (dann wäre Files die owning side), oder eine Mapping Tabelle wird verwendet.

Sieh dir doch mal das erzeugte Schema an (kannst es auch gerne herzeigen) und sieh dir nochmals die Grundlagen zu OneToMany an.

Also, wenn du doch ORM machst, solltest du dich einen sch**** interessieren wie gemappt wird, solange es funktioniert.
Ähm... falsch, ganz falsch.

Bei ORM geht es nicht darum, dass man dem RDBMS gegenüber ignorant ist und nix darüber wissen muss, ganz im Gegenteil.
Bei ORM geht es um die Bequemlichkeit bestimmte Dinge vom ORM erledigen zu lassen die man sonst manuell machen müsste, das heisst aber auch, dass man wissen muss was ein RDBMS ist, und wie man auf Objekte mapped.
Leute die das RDBMS ignorieren während sie mit ORM arbeiten machen keine gute Arbeit...
 

AFlieger

Mitglied
Also deine JPQL-Abfrage wird wohl so aussehen:

SELECT c from customer c where c.id = :customerid

Dann müsstest du eigentlich deine Customer mit den dazugehörigen Files haben.

oder aber

SELECT f from files f where f.customer.id = :customerid
 
Zuletzt bearbeitet:

Ähnliche Java Themen


Oben