Wird auf den Eintrag referenziert?

Status
Nicht offen für weitere Antworten.

Kjatar

Mitglied
Hi Leute
Ich hab da ein problem bei meiner Datenbank... Naja, Problem ist vllt übertrieben, aber ich muss ne bessere Lösung finden.

Folgendes Szenario: Ich habe drei Tabellen, Company, Department, User
Company besitzt keine FK's
Department besitzt einen FK auf Company
User besitzt einen FK auf Department

Datenbanksystem ist postgresql

Im Java gibts für jedes Tabelle ein DAO und ein DTO. Für verschiedene Aktionen muss ich von einer Company wissen, ob irgendeine Zeile in Department auf die Company referenziert. Im moment habe ich das so gelöst, dass das CompanyDAO bei einem Select alle Departments ausliest und überprüft, ob eines davon auf die jeweilige Company refernziert. Ist nicht so die schönste Lösung und der falsche Ort für die Abfrage.
Code:
Company company = CompanyDAO.readById(id);
boolean children = false;
ArrayList<Department> departments = new DepartmentDAO().readAll();
if(departments != null) {
	for(Department d: departments){
		if(d.getCompanyId() == company.getId()) {
			used = true;
			break;
		}
	}
}
Eine weitere möglichkeit, die mir zur Zeit vorschwebt, ist eine seperate Methode im CompanyDAO hasChildren(Company c). In dieser würde das selbe passieren wie oben, nur halt ausgelagert. Das wäre dann zwar besser abgetrennt, allerdings wiederum nicht die schönste möglichkeit...

Meine Frage ist nun, ob es dafür vllt bessere Lösungen gibt. Möglicherweise ein DB Befehl, der zu einer bestimmten Zeile sagen kann, ob auf diese referenziert wird. Noch schöner, aber denke ich kaum dass das funktioniert, einen Befehl, denn man auf dem ResultSet ausführen kann, der das selbe durchführen würde.
Oder gibts da gar keine Möglichkeiten, um nicht selbst Zeile für Zeile aller möglichen Kinder durchzuschauen, ob jetzt irgendwo auf die Company referenziert wird...[/code]
 

ARadauer

Top Contributor
???

select * from department where company_FK = 5

einfach in der tabelle schau ob der die company als fk vorkommt...
 

Kjatar

Mitglied
Ich hab im DAO leider vordefinierte Methoden, bedeutet, ich kann nicht nach jedem beliebigen Feld suchen... department kann ich nur gleichzeit nach FID und name durchsuchen oder nach der eigenen ID
Der MVC Patterns sollten so weit wie möglich berücksichtigt werden, also nicht einfach selbst ne abfrage mit eigenem SQL code schreiben sondern alle Abfragen über das DAO durchführen
 
M

maki

Gast
Der MVC Patterns sollten so weit wie möglich berücksichtigt werden, also nicht einfach selbst ne abfrage mit eigenem SQL code schreiben sondern alle Abfragen über das DAO durchführen
Das hat alles gar nix mit MVC zu tun.

DAOs nutzt man für die DB Abfragen, wenn du eine zusätzliche Abfrage brauchst, dann sind die DAOs der richtige Ort dafür.
 

ARadauer

Top Contributor
Der MVC Patterns sollten so weit wie möglich berücksichtigt werden, also nicht einfach selbst ne abfrage mit eigenem SQL code schreiben sondern alle Abfragen über das DAO durchführen

ist das eine Schulaufgabe?
woher hast du das DAO?
Wer sagt den, dass man im DAO keinen eigenne SQL Code schreiben kann, das verletzt ja das MVC Pattern nicht...

Bietet das Department DAO kein getDepartmentByCompany....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
M OutOfMemoryException obwohl nur 1 Eintrag abgefragt wird Datenbankprogrammierung 7
N batchupdate, es wird nur der letzte Eintrag eingetragen Datenbankprogrammierung 5
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Maxim6394 JPA / EclipseLink - n:m Beziehung wird nicht aktualisiert Datenbankprogrammierung 0
Maxim6394 JPA 3.2 & SQLite - LocalDateTime wird falsch geladen Datenbankprogrammierung 1
D Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir Datenbankprogrammierung 2
Watsoon Treiber wird in Intellij nicht geladen Datenbankprogrammierung 2
Kirby.exe PreparedStatement wird nicht ausgeführt Datenbankprogrammierung 5
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
J Netbeans 11 und Eclipse JPA 2.5 Entity wird nicht gefunden Datenbankprogrammierung 4
F H2 ObjectOptimisticLockingFailureException wird nicht geworfen Datenbankprogrammierung 0
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
S MySQL Speicher wird nicht freigegeben bei Datenbankabfragen Datenbankprogrammierung 6
D MySQL Eingabe wird nicht übernommen... Datenbankprogrammierung 11
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
E Nur der letzte Datensatz wird in Tabelle geschrieben Datenbankprogrammierung 4
L JTable-DB: Letzter wert wird nicht angezeigt. Datenbankprogrammierung 0
K Datenbank wird bei Programmstart als .jar nicht mehr befüllt Datenbankprogrammierung 12
T MySQL Datetime wird auf Sekunden gerundet, soll es aber nicht Datenbankprogrammierung 2
N SQL-Statement Auslesen des Resultset wird immer langsamer Datenbankprogrammierung 6
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
T f:event preRenderView Trigger wird nicht ausgeführt Datenbankprogrammierung 4
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
A MySQL Datensatz wird nicht richtig gelöscht Datenbankprogrammierung 6
H Microsoft Access Treiber wird nicht gefunden Datenbankprogrammierung 9
S JPA, Primary Key wird nicht in relationstabelle erstellt Datenbankprogrammierung 3
B MySQL Hibernate (duplicate Entry) Beziehungstabelle wird nicht befüllt Datenbankprogrammierung 8
N batch-Update wird nicht durchgeführt Datenbankprogrammierung 2
M Rückgabewert aus DB wird falsch gelesen Datenbankprogrammierung 3
S Wie überprüfe ich ob die Instanz einer Connection gerade werwendet wird? Datenbankprogrammierung 4
C DB.Treiber wird nicht gefunden? Datenbankprogrammierung 5
E MySQL Treiber wird nicht geladen Datenbankprogrammierung 5
K org.gjt.mm.mysql.driver wird nicht gefunden Datenbankprogrammierung 11
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
N Ubuntu 9.04 jdbc connector wird nicht gefunden Datenbankprogrammierung 5
J SqlConnection Instanz wird immer grösser? Datenbankprogrammierung 2
I Sql Befehl wird nicht ausgeführt Datenbankprogrammierung 8
sparrow [Hibernate] Relation wird nicht gespeichert (Topic changed) Datenbankprogrammierung 11
A REVOKE wird nicht durchgeführt Datenbankprogrammierung 2
M Treiber wird nicht gefunden Datenbankprogrammierung 5
P Datenbank wird nicht geschlossen - problematisch? Datenbankprogrammierung 2
N mysql.jdbc treiber wird nicht gefunden Datenbankprogrammierung 2
D Neuer Query wird nicht erkannt Datenbankprogrammierung 10
S JOptionPane wird nicht angezeigt Datenbankprogrammierung 5
W Nur ein Datensatz wird angezeigt, obwohl mehrere existieren Datenbankprogrammierung 7
ven000m SQL Querry wird nicht abgesetzt, da vorher underlined! Datenbankprogrammierung 8
D "Distinct" wird nicht ausgeführt Datenbankprogrammierung 8
H mySql Connector/J Treiber wird nicht gefunden Datenbankprogrammierung 2
C SQLException wenn String auf VARCHAR geschrieben wird Datenbankprogrammierung 10
H JDBC-Treiber wird nicht geladen Datenbankprogrammierung 2
L SQL-Problem: Insert wird nicht ausgeführt Datenbankprogrammierung 5
N Cloudscape wird opensource :) Datenbankprogrammierung 3
X Verbindung zu DB wird zurückgewiesen Datenbankprogrammierung 8
H letzter Datensatz wird nicht gefunden? Datenbankprogrammierung 6
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
D SQLite INSERT OR REPLACE INTO macht neuen Eintrag?! Datenbankprogrammierung 2
M Derby/JavaDB Neu geschriebener Eintrag per UPDATE lässt sich nicht unmittelbar abrufen Datenbankprogrammierung 2
G 2 Tabellen und ein spezieller Eintrag Datenbankprogrammierung 2
J Java DB Neuen Eintrag am Anfang der Table Datenbankprogrammierung 6
E ClassNotFoundException bei verschiedenen MS SQL Treibern trotz Classpath-Eintrag Datenbankprogrammierung 5
A Ausgewählten Jtable Eintrag aus Db löschen Datenbankprogrammierung 9
C H2 Letzten Eintrag auslesen Datenbankprogrammierung 6
G Existiert schon ein DB- Eintrag Datenbankprogrammierung 1
S MySQL Kein DB-Eintrag Datenbankprogrammierung 4
prakdi einzelnen SQL Eintrag finden der "update" enthält Datenbankprogrammierung 3
E Aus einer Tabelle Zeilen mit doppeltem Eintrag holen? Datenbankprogrammierung 4
B Datenbank Abfrage: Es fehlt immer ein Eintrag! Datenbankprogrammierung 7
B Eintrag in der MySQL Datenbank eintragen? Datenbankprogrammierung 2
G Policy Eintrag für SQL Zugriff im Netzwerk Datenbankprogrammierung 10
T [jdbc] einen Eintrag aus mehreren Tabellen löschen (Batch) Datenbankprogrammierung 3
J Eintrag aus der Spalte auswählen Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben