OOP Zugriff auf Objekte von außen

apa13179

Mitglied
Hallo,
ich habe ein Java-Projekt das zum Einlesen versch. Messdatn dienen soll.

In der Klasse FileHandler erzeuge ich ein Objekt Header (Head1) und mehrere Objekt Messdaten (Measure1, Measure2 ...).
Ich will jetzt in der Klasse ÜbergabeDB die vorher erzeugten Objekte aufrufen und in die DB schreiben.

Wie bekomme ich den Zugriff auf die Objekte hin?
 

Joose

Top Contributor
Mittels getter/setter Methoden oder einfach nur als Parameter könntest du Objekte übergeben.

EDIT:
Die Klasse "FileHandler" sollte ja nur das Einlesen der Daten übernehmen, die Klasse "ÜbergabeDB" sollte nur das Eintragen in die Datenbank regeln.

Sprich du brauchst noch eine Klasse welche die Logik deiner Applikation abbildet.
Diese Klasse erzeugt nun ein Objekt von FileHandler und bekommt die erstellten Objekte als Rückgabe einer Methode "leseDaten" oder per getter.
Diese Objekte kann man nur per setter oder als Parameter an eine Methode eines ÜbergabeDB-Objektes geben.
 
K

kneitzel

Gast
Also wie das konkret geht kann man nur direkt am Code zeigen. Normalerweise gibt man Referenzen auf Instanzen weiter über die man dann (ggf. über weitere Referenzen) an die Daten heran kommt.

Also so ein Ablauf könnte dann irgendwo so aussehen:
Code:
FileHandler fileHandler = new FileHandler();
fileHandler.soSomething();
UebergabeDB uebergabe = new UebergabeDB(fileHandler); // Falls der Konstrutor ein FileHandler nutzen kann.
UebergabeDB uebergabe = new UebergabeDB(fileHandler.getHeader, fileHandler.getData); // Hier werden nur die Daten selbst übergeben. Macht es etwas unabhängiger aber da wäre ein Interface evtl. besser...
UebergabeDB uebergabe = new UebergabeDB();
uebergabe.setHeader(fileHandler.getHeader()); // Jetzt halt über Setter statt über Konstrultor.

Oder eben der indirekte Weg
Code:
public class SomeClass {
    FileHandler fileHandler;

    public FileHandler getFileHandler() {
       return fileHandler;
    }

    public void someCodeSomewhere() {
      fileHandler.soSomething();
      UebergabeDB uebergabe = new UebergabeDB(this); // Jetzt kann halt die ÜbergabeDB Klasse SomeClass.getFileHandler aufrufen.

Unter dem strich ist es halt einfach so, dass Du eine Art Netz aus Referenzen aufbaust. (Wobei die meisten Dinge nur eine Baumstruktur haben.) Also oft hast Du eine Instanz einer Klasse, die die Applikation darstellt oder den Server oder was halt die Basis ist. Und dort hast Du dann halt weitere Dinge wie Zugriff auf DataLayer, Model, Controller, ...

Es ist halt wichtig, das OO Design ordentlich zu machen, dann ergibt sich der Rest von alleine.
 

apa13179

Mitglied
Mein Ansinnen war, dass ich zuerst alle Daten aus der Textdatei zusammentrage und danach eine DB-Verbindung aufbaue und alles in die DB übertrage und danach Verbindung wieder kappen.

So werde ich mehrmals auf die DB zugreifen müssen, da ich denke das der Code sonst unübersichtlich wird.
 
K

kneitzel

Gast
Wieso sollte der Code unübersichtlich sein? Das ist ja nur eine Frage der Schreibweise.

Du kannst ja folgendes haben:
a) Eine Klasse, die nur die Daten eines Datensatzes hält (POJO = Plain Old Java Object)
b) Eine Klasse, die eine Textdatei liest und dann eine Liste der Daten liefert.
c) Nun kann eine Funktion die Datenbank öffnen und für jeden Datensatz in der Liste diesen in die Datenbank eintragen.
Wo Du die Datenbank genau öffnest ist dabei dann auch egal - das kann im Punkt b) sein (halt ausserhalb der for each Schleife und C) bekommt dann die Connection mit) oder es kann in c) sein.

Generell ist folgendes zu bedenken:
Nur weil Du im Code ständig Datenbankverbindungen "öffnest", geschieht dies nicht wirklich! Viele Treiber nutzen ein Connection Pooling, d.h. der Treiber ist zuständig für die Verwaltung der Connections. Wenn eine Connection angefordert wird, dann schaut er, ob noch eine offene Connection da ist. Ist dies der Fall, wird diese Connection geliefert. Ist dies nicht der Fall, dann wird eine neue Verbindung aufgebaut.
Beim Schließen der Verbindung, wird die Verbindung nicht geschlossen sondern landet geöffnet in diesem Pool.

Es ist ein Best Practice bei uns, die Datenbankverbindungen immer nur kurz offen zu halten.

Also unter dem Strich zwei Punkte:
- Sauberes Design ist unabhängig davon möglich, was Du genau machen willst. Eine Aussage wie "Ich will die Connection offen halten" sorgt nicht für schlecht lesbaren Code. Egal was für Anforderungen kommen: Clean Code ist möglich.
- Keine Optimierungen! Nicht versuchen hier etwas zu optimieren a.la. "Ich will die Datenbank offen halten". Gerade bei Dingen, die schon Millionen anderer Entwickler gemacht haben, ist es sehr wahrscheinlich, dass es da schon andere Lösungen gibt (wie hier das Connection Pooling).
 

Joose

Top Contributor
Hier ein kleiner Beispielcode:
Java:
public class Applikation() {
   private FileHandler file;
   private DatabaseHandler database;

   public Applikation() {
     file = new FileHandler();
     database = new DatabaseHandler();
   }

   public void Work() {
     file.Read();
     List<SomeData> datalist = file.getData();;
     // daten manipulieren wenn gewünscht .....
     database.insertData(datalist);
   }
}

Deine beiden Klassen zum File einlesen, bzw. in die DB schreiben bleiben nahezu unverändert
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
M Zugriff auf Objekte aus doppelten Array Java Basics - Anfänger-Themen 16
W zugriff auf Objekte Java Basics - Anfänger-Themen 11
F Zugriff auf Objekte über ActionListener Java Basics - Anfänger-Themen 10
E Zugriff auf Objekte in einer ArrayList Java Basics - Anfänger-Themen 3
P Zugriff auf Objekte einer anderen Klasse Java Basics - Anfänger-Themen 1
S Zugriff auf andere methodenvariablen / Objekte Java Basics - Anfänger-Themen 4
N Zugriff auf Objekte von fremden Klassen aus? Java Basics - Anfänger-Themen 4
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
W Typisierte ArrayList und der Zugriff auf den Typ Java Basics - Anfänger-Themen 5
M Zugriff auf Klasse Java Basics - Anfänger-Themen 2
K Zugriff auf C: Java Basics - Anfänger-Themen 5
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T ZUgriff auf 'Werte' Java Basics - Anfänger-Themen 3
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
C Klassen Zugriff auf Objekt anderer Klasse Java Basics - Anfänger-Themen 8
B Methoden Zugriff auf Variable ermöglichen Java Basics - Anfänger-Themen 3
M Zugriff auf Arraylist Java Basics - Anfänger-Themen 7
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
B Erste Schritte Array-Zugriff Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben