Datenbank und OO-Aufsatz

Jay1980

Bekanntes Mitglied
Servus,

wie geht ihr vor wenn es eine Datenbank für die Datenhaltung gibt / geben soll und ihr eine Anwendung bauen sollt? Da kann man nun ein paar Bücher schreiben, mir geht es aber um die Frage, ob ihr erst eine objektorientierte Analyse dann das Design macht und euch dann mit Hilfe eines Frameworks darum kümmert, dass die Daten auch so in die Datenbank gehen. Oder geht ihr eher so vor, dass ihr erst ein ERM anfertigt, dann das relationale Modell baut und ihr dann nur den objektierentierten Aufbau durchdenkt?

Also kommen bei euch erst die Gedanken zum Datenbankaufbau, oder erst zur OO-Welt oder gar erst die Entscheidung, welche Tools (MVC-Framework, Persistenzframework, Webservice mit RCP, Webanwendung) ihr einsetzen werdet und woran sich dann alles weitere anknüpft? Danke vorab für einen Einblick wie ihr derartige Problemstellungen aufdröselt.
 
A

Andgalf

Gast
Also ich denke da größtenteils erstmal nur Objektorientiert ... Dafür gibt es ja (im Prinzip) die OR Mapper.

Kommt aber immer drauf an, wie die Anforderunge sind bzw. was ich machen will.

Also ein Pauschal Urteil kann ich hier leider nicht fällen, aber wenn möglich erstmal OO Design.
 
N

nillehammer

Gast
Wenn Du mit Deinem Projekt neu anfängst, definier Dir erst Deine Datenklassen in Java. Für das Mapping auf Datenbanktabellen nutze entweder ein Framework (bspw. Hibernate) oder programmier plain JDBC. Geh in möglichst kleinen Schritten vor. Definiere also erstmal eine Klasse ohne Beziehungen zu anderen Klassen und mappe diese, wenn das klappt, erstelle die erste Beziehung und mappe diese...

Das ganze von der Datenbank her aufzuziehen, macht meiner Einschätzung nach nur Sinn, wenn die Datenbank schon steht und man darauf eine Javaanwendung aufsezten will.
 

Jay1980

Bekanntes Mitglied
Genau, sehe ich auch so. Als Zwischenlösung zwischen Persistenzframework wie Hibernate und JDBC-Aufrufen sehe ich dann die Anwendung von Entwurfsmustern, das Zend-Framework (PHP) implementiert etwa das Row-Data-Gateway (Zend Framework: Documentation: Zend_Db_Table_Row - Zend Framework Manual ).

Ich wurde letztens gefragt, wie ich die Vererbung ins relationale Modell bringe und da dachte ich an das Pattern. Im Endeffekt muss ich aber schon noch wissen, wie ich 'is-a' und 'has-a'-Beziehungen in die Datenbank karren kann. Ich denke, wenn ich das nicht hinbekomme, dann kann ich überall in den Actions bzw. den Controllern die SQL-Abfrage anstoßen und das Ergebnisobjekt aufgreifen und weiterverarbeiten. Dann wächst zwar nach und nach meine objektorientierte Welt zusammen, weil ich genau weiss, welche Objekte ich tatsächlich in der Anwendung brauchen kann. Datenbank und OOP-Welt sind dann halt überhaupt nicht verdrahtet. Das entspricht ja dann dem Gewurstel, das auf mich zukommt, wenn ich bei einer bestehenden Datenbankanwendung eine kleine Funktions-Erweiterung 'draufsetzen' soll - oder sehe ich das falsch?

Also:
Wie bringt ihr eine Vererbungshierachie in der Datenbank unter?
Wie bringt ihr has-a Beziehungen in der Datenbank unter?
Ist meine Wurstel-Taktik bei einer bestehenden Datenbank-Anwendung, (die keine expliziten Erweiterungssysteme, wie etwa Hooks vorsieht,) ein vielversprechender Ansatz?
 
M

maki

Gast
Dafür gibt es grundsätzlich 3 Möglichekiten, alle mit ihren vor- und Nachteilen, das Problem ist eben der sog. Impedance Mismatch":
JPA Implementation Patterns: Mapping Inheritance Hierarchies | Javalobby

Wie bringt ihr has-a Beziehungen in der Datenbank unter?
Über eine Relation, zB. Tabelle und/oder FK.

Ist meine Wurstel-Taktik bei einer bestehenden Datenbank-Anwendung, (die keine expliziten Erweiterungssysteme, wie etwa Hooks vorsieht,) ein vielversprechender Ansatz?
Verstehe deine Taktik ehrlich gesagt nicht.
 

Jay1980

Bekanntes Mitglied
Zu meiner Taktik:

Ich formuliere eine SQL-Abfrage, die mir genau mein Ergebnis aus der Datenbank liefert. Mit der Zeit merke ich, dass ich in meinem Anwendungsteil öfter eine ähnliche Anfrage brauche die mir den Datensatz der Tabelle 'user' liefert, ich entscheide mich also eine Klasse 'User' zu bauen mit den Eigenschaften, die ich brauche. So wächst nach und nach die OOP-Welt, die ich für meine Funktionalität brauche. Das meinte ich mit Gewurstel.
 
M

maki

Gast
Das ist keine taktik imho, das ist ... naja.

Was ist den nun, besteht die DB schon oder nicht?
 

Jay1980

Bekanntes Mitglied
Ich möchte es für beides wissen. Wie ich dann vorgehe ist mir egal, ist auch denkbar, die bestehende Datenbank einzustampfen und die Daten dann in die sauber durchdachte Anwendung einzulesen. Aber wie gesagt, ich hoffe dass ich beide Anwendungsfälle bald meistern kann, einmal 'von Grund auf neu bauen' und einmal 'OOP-Aufbau auf bestehende Datenbank drauf setzen'.

UPDATE: Danke für den Link, sehr interessant!
 
M

maki

Gast
Entscheide dich für einen Anfang, entweder die OOP Welt oder die RDBMS Welt, die andere Seite hat sich dann danach zu richten.
 

ARadauer

Top Contributor
Ich versuche primär die Themen objektorientiert aufzubauen.
Da ich aber Business Software schreibe wo einfach fast alles über die Datenbank läuft kann es schon sein, dass ich gewisse OO Prinzipien bewusst ausser acht lasse um mehr Performance auf DB Seite zu haben. Es kommt auch oft vor, dass ich bewusst gelernte DB Prinzipeien (zb Normalisierung) aus Performance Gründen ausser Acht lasse....

Nur weil ich Hibernate verwende kann ich nicht meine Augen vor der Datebank verschließen. Das ist bei uns ja eigentlich immer das Bottleneck.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
S Kochbuch bzw. Rezepte-Datenbank app mit Swing..? Allgemeine Java-Themen 5
N relativier Pfad für sqlite-Datenbank in Gradle/IntelliJ Allgemeine Java-Themen 2
Avalon Data Transfer Objekte aus Datenbank erstellen Allgemeine Java-Themen 8
B API Token in Datenbank ablegen? Allgemeine Java-Themen 9
S Einzigartigen String in Datenbank finden und löschen Allgemeine Java-Themen 23
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
Meeresgott Kapselung Tabellen der Datenbank erzeugen. Allgemeine Java-Themen 7
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
looparda Unit Test - Abgänigkeit zur Datenbank isolieren Allgemeine Java-Themen 3
T Datentypen MNIST Datenbank auslesen (.gz) Allgemeine Java-Themen 0
O 2 Combobox in Abhängigkeit von der 1 Combobox (Datenbank) Allgemeine Java-Themen 1
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
F OOP Datenbank-Klasse überall verfübar Allgemeine Java-Themen 2
R Test Umgebung für Datenbank erstellen, was braucht es? Allgemeine Java-Themen 14
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
T Zugriff auf Datenbank Allgemeine Java-Themen 1
G Datenbank von nöten? Allgemeine Java-Themen 7
3 Backup von h2-Datenbank-Datei erstellen Allgemeine Java-Themen 6
S Java DateTime für Datenbank Allgemeine Java-Themen 4
F Alternative sun.jdbc.odbc.JdbcOdbcDriver (Access Datenbank) Allgemeine Java-Themen 2
vandread Daten verschlüsseln mit Java oder Datenbank Allgemeine Java-Themen 15
P MYSQL Datenbank Dump einspielen Allgemeine Java-Themen 1
M SQL Datenbank in JAVA Projekt Allgemeine Java-Themen 3
P iTunes Datenbank manipulieren Allgemeine Java-Themen 2
A Ausführbare Java-Datei aus Projekt und Datenbank Allgemeine Java-Themen 3
T Datenbank oder Filesystem? (E-Learning) Allgemeine Java-Themen 2
N Datei aus Datenbank öffnen mit Standardanwendung Allgemeine Java-Themen 2
M BufferedReader: Vom Logfile zur Datenbank Allgemeine Java-Themen 6
P Klassen Template-Klasse für Datenbank-Abfragen erstellen Allgemeine Java-Themen 2
E JAVA Alternativen zur Datenbank? Allgemeine Java-Themen 7
Dit_ GeoKoordinaten Datenbank (nicht nur Städte) Allgemeine Java-Themen 6
J Progress Bar während Datenbank Erstellung Allgemeine Java-Themen 2
C Datenbank - Textfiles - Anderes Allgemeine Java-Themen 34
T Datenbank lässt sich un Entwicklungsumgebung öffnen, aus .jar aber nicht Allgemeine Java-Themen 9
G JNDI/LDAP/Datenbank Allgemeine Java-Themen 2
Meldanor Speichern der Datenbank - Lohnen sich mehrere Threads? Allgemeine Java-Themen 2
hdi [Free Download] Film-Datenbank Allgemeine Java-Themen 30
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
K von List getSelected auf ResultSet Datenbank löschen Allgemeine Java-Themen 2
C Java Polling, Server Prozedur oder doch Datenbank? Allgemeine Java-Themen 4
H .dbf (IV) Datenbank einlesen Allgemeine Java-Themen 9
D Recipes / Codeschnipsel Datenbank für Java? Allgemeine Java-Themen 3
T MySQl Datenbank als Array ausgeben Allgemeine Java-Themen 11
M Rechenweg in Datenbank speichern und nutzen Allgemeine Java-Themen 6
O viele Datensätze aus Datenbank - Java Heap Space - Excepion Allgemeine Java-Themen 25
E Datenbank/iBatis Fehlermeldung Allgemeine Java-Themen 4
G Datenbank zur laufzeit wechseln Allgemeine Java-Themen 11
N ClassLoader - Laden von Bytecode aus einer Datenbank Allgemeine Java-Themen 6
S Speicherung von Daten: Datenbank(sql) oder xml? Allgemeine Java-Themen 9
F Vector in eine Datenbank speichern? Allgemeine Java-Themen 3
A Problem beim Starten der H2-Datenbank Allgemeine Java-Themen 4
S Datenbank Abfragen mit großen Datenmengen Allgemeine Java-Themen 22
G Datenbank-Anwendung schnell erstellen. Allgemeine Java-Themen 7
P Datenbank Tabelle spiegeln Allgemeine Java-Themen 22
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
P Zugriff auf die DatenBank Allgemeine Java-Themen 44
H Daten aus MySQL datenbank auslesen und in ArrayList stecken Allgemeine Java-Themen 8
P Timestamp in eine Firebird-Datenbank einfügen Allgemeine Java-Themen 6
P Java Acces Datenbank Problem ! (Brauche eine Abfrage) Allgemeine Java-Themen 5
B Datenbank anlegen Allgemeine Java-Themen 10
N Datenbank vs. Filesystem Allgemeine Java-Themen 5
F datenbank oder csv etc Allgemeine Java-Themen 6
V Brauche Beratung in Sachen Java+Datenbank+Web Allgemeine Java-Themen 8
G Ab wann Datenbank verwenden Allgemeine Java-Themen 15
H sichere Datenbank-Verbindung Allgemeine Java-Themen 4
H Datenbank an ein Java Client Server Programm anschliessen Allgemeine Java-Themen 3
F lizenzfreie Datenbank für JAVA-Anwendung Allgemeine Java-Themen 3
S Zeilenausgabe Datenbank Allgemeine Java-Themen 2
S Datenbank Allgemeine Java-Themen 9
G Sichere Passwortübergabe bei Datenbank Allgemeine Java-Themen 14
L Datenbank Abfrage (Felder&Tabelle nicht fix) in ArrayLis Allgemeine Java-Themen 4
S Java Datenbank auf Festplatte installieren Allgemeine Java-Themen 2
G JComboBox mit Werten aus einer Access Datenbank füllen Allgemeine Java-Themen 18
T Java Application Server + Datenbank von CD Allgemeine Java-Themen 8
G Abfrage in datenbank Allgemeine Java-Themen 5
G Daten aus MySQL-Datenbank an JFreeChart übergeben Allgemeine Java-Themen 3
D Userdaten + Datenbank? Allgemeine Java-Themen 11
G HSQLDB Datenbank-Dateien aus Jar-Datei lesen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben