Überladen von Funktionen vermeiden

Status
Nicht offen für weitere Antworten.

sammy2ooo

Mitglied
Hallo zusammen,

ich habe ein ValueObject mit verschiedenen Werten: vorname, nachname, strasse, plz, etc... und dazu eine Klasse welche mir die Objekte aus einer DB holt. Wie kann ich es vermeiden für jedes Attribut meines ValueObjects eine Methode zu schreiben?

Code:
    public void listAddresses(String nachname) {
        Session mySession = HibernateUtil.getSessionFactory().openSession();
        Transaction myTransaction = mySession.beginTransaction();
        
        List result = mySession.createQuery("from Address where nachname = \'" + nachname + "\'").list();
        
        for (Iterator iter = result.iterator(); iter.hasNext(); ) {
        	Address loadedAdr = (Address) iter.next();
        	        	
    		System.out.println("Vorname: " + loadedAdr.getVorname() +
 				   " Nachname: " + loadedAdr.getNachname() +
 				   " Strasse: " + loadedAdr.getStrasse() +
 				   " Hausnr: " + loadedAdr.getHausnr() +
 				   " PLZ: " + loadedAdr.getPlz() +
 				   " Land: " + loadedAdr.getLand());
        }
        
        myTransaction.commit();
        mySession.close(); 
    }

    public void listAddresses(String vorname) {
        Session mySession = HibernateUtil.getSessionFactory().openSession();
        Transaction myTransaction = mySession.beginTransaction();
        
        List result = mySession.createQuery("from Address where nachname = \'" + vorname + "\'").list();
        
        for (Iterator iter = result.iterator(); iter.hasNext(); ) {
        	Address loadedAdr = (Address) iter.next();
        	        	
    		System.out.println("Vorname: " + loadedAdr.getVorname() +
 				   " Nachname: " + loadedAdr.getNachname() +
 				   " Strasse: " + loadedAdr.getStrasse() +
 				   " Hausnr: " + loadedAdr.getHausnr() +
 				   " PLZ: " + loadedAdr.getPlz() +
 				   " Land: " + loadedAdr.getLand());
        }
        
        myTransaction.commit();
        mySession.close(); 
    }
 
S

SlaterB

Gast
also auf jeden Fall könntest du jede Operation auf eine Zeile verkürzen:
Code:
listAdressesSQL("from Address where nachname = \'" + nachname + "\'");

der ganzen Rest steht in der EINEN Operation listAdressesSQL

--------

aber selbst bei nur einer Zeile pro Operation sind es immer noch n Operationen,

für so einen kleinen Bereich wird es sich kaum lohnen,
aber eine Möglichkeit:

Enums, int-Konstanten und/ oder String-Arrays:

Code:
public void listAddresses(Typ typ, String value) { 
listAdressesSQL("from Address where "+field[typ]+" = \'" + value + "\'");
}

wobei der Code von listAdressesSQL dann auch wieder direkt in dieser Operation stehen könnte,
sofern nirgendwo anders gebraucht,

problematisch wirds, wenn du auch int-Felder hast, bei denen die einfachen Anführungszeichen stören würden,
entweder eine zweite Operation speziell für diese oder ein Array mit dieser Information pro Feld
oder ähnliches
 
B

bygones

Gast
mhm dein code stueck geht ja schonmal nicht :)

wenn ueber jedes attribut (vorname, nachname, plz usw) eine Abfrage moeglich sein soll dann brauchst du auch fuer jedes eine Methode.

Ich wuerde das ueber eine Enum machen:

Code:
enum AdressFields {
 vorname, nachname, plz, strasse; // usw
}

public void listAddress(AdressFields field, String value) {
        Session mySession = HibernateUtil.getSessionFactory().openSession();
        Transaction myTransaction = mySession.beginTransaction(); 

        List result = mySession.createQuery("from Address where "+ field +" = \'" + value + "\'").list(); 

     for (Iterator iter = result.iterator(); iter.hasNext(); ) {
           Address loadedAdr = (Address) iter.next();
          
          // wie die ausgabe von adress sein soll -> in die toString methode der Klasse            
          System.out.println(loadedAdr);
        }
       
        myTransaction.commit();
        mySession.close(); 
}

oder eben modularer und fuer jedes Feld eine eigene Methode
Code:
privatevoid listAddress(String field, String value) {
        Session mySession = HibernateUtil.getSessionFactory().openSession();
        Transaction myTransaction = mySession.beginTransaction(); 

        List result = mySession.createQuery("from Address where "+ field +" = \'" + value + "\'").list(); 

     for (Iterator iter = result.iterator(); iter.hasNext(); ) {
           Address loadedAdr = (Address) iter.next();
          
          // wie die ausgabe von adress sein soll -> in die toString methode der Klasse            
          System.out.println(loadedAdr);
        }
       
        myTransaction.commit();
        mySession.close(); 
}

public void listAddressByLastname(String value) {
   listAddress("nachname", value);
}
// ... und die anderen methoden
 

sammy2ooo

Mitglied
danke für die Antworten.

wie würde ich dann einen enum wert als parameter übergeben? So funktioniert das leider nicht.


Code:
import pim.data.Address;
import pim.data.AddressManager;
...
AddressManager adrMgr = new AddressManager();
adrMgr.listAddresses(AddressFields.nachname, "Bommelmaier");
 
S

SlaterB

Gast
was ist AddressFields (Klasse posten) und was ist die Fehlermeldung?
was erwartet die Operation an Parametern?

poste doch mal eine vollständige Testklasse unabhängig von deinem Code
mit main und allem drumherum keite 30 Zeilen..
 
B

bygones

Gast
wenn du es so wie mein vorschlag gemacht hast...

hast du die enums importiert ? bzw wie slaterB schrieb... was genau sit der fehler ?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
lallmichnichtzu Methoden Überladen des .equals-Operators Java Basics - Anfänger-Themen 6
B Überschreiben und Überladen Java Basics - Anfänger-Themen 8
O Überschreiben/Überladen Methode Java Basics - Anfänger-Themen 6
D Zwei Generics beim Überladen von Methoden Java Basics - Anfänger-Themen 3
A Überladen von Konstruktoren Java Basics - Anfänger-Themen 2
H Überladen Verständnis Java Basics - Anfänger-Themen 3
N Überladen über mehrere Klassen hinweg? Java Basics - Anfänger-Themen 3
K Überschreiben und Überladen Java Basics - Anfänger-Themen 3
T Überladen von Methoden und Spezialisierung Java Basics - Anfänger-Themen 7
K Überladen und Überschreiben von Methoden Java Basics - Anfänger-Themen 3
G Überladen von Konstruktoren mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 4
K Überladen von Methodenaufrufen Java Basics - Anfänger-Themen 3
S Überladen des + Operators? Java Basics - Anfänger-Themen 6
G Keine Ahnung! Überladen? Java Basics - Anfänger-Themen 11
T Überladen Java Basics - Anfänger-Themen 2
B Erste Schritte Bisektion mit zwei Funktionen? Java Basics - Anfänger-Themen 1
J Verständnisfrage zu throws neben Funktionen Java Basics - Anfänger-Themen 2
A Variablen Definitionen zu Codes und Funktionen. Java Basics - Anfänger-Themen 3
Z If Funktionen, GUI, Fachklasse Java Basics - Anfänger-Themen 25
H Frage zu Methoden/Funktionen Java Basics - Anfänger-Themen 3
M Vererbung Funktionen in Basisklasse deklarieren Java Basics - Anfänger-Themen 4
J Funktionen auf der Rückgabe eines Stacks (pop) Java Basics - Anfänger-Themen 6
J Funktionen Java Basics - Anfänger-Themen 9
S Klassen Class mit Funktionen importieren Java Basics - Anfänger-Themen 1
B Funktionen von außen aufrufen Java Basics - Anfänger-Themen 1
M Klassen Funktionen aus anderen Klassen benutzen Java Basics - Anfänger-Themen 3
G funktionen der super-klasse von der super-klasse Java Basics - Anfänger-Themen 6
R Funktionen Synchron laufen lassen Java Basics - Anfänger-Themen 10
K Ungenauigkeit beim Zeichnen von Funktionen Java Basics - Anfänger-Themen 6
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
A ganzrationale funktionen auswerten. Java Basics - Anfänger-Themen 1
S Funktionen/Atrribute nur innerhalb einer package Zugänglich machen Java Basics - Anfänger-Themen 8
Z Differenz zwischen 2 Daten berechnen, ohne importiere Funktionen! Java Basics - Anfänger-Themen 10
S Funktionen zeichnen Java Basics - Anfänger-Themen 2
K Methoden Funktionen und Prozeduren Java Basics - Anfänger-Themen 11
R Rekursionen und Funktionen ... Java Basics - Anfänger-Themen 8
J Funktionen automatisiert aufrufen Java Basics - Anfänger-Themen 5
B Funktionen programmieren, die im Hintergrund aktiv sind Java Basics - Anfänger-Themen 2
O Funktionen dateiübergreifend mit Packages Java Basics - Anfänger-Themen 6
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
M Methoden Funktionen Java Basics - Anfänger-Themen 6
M Erste Schritte Fenster Und VB Funktionen Java Basics - Anfänger-Themen 8
G Aufruf externer Funktionen Java Basics - Anfänger-Themen 7
J Aufruf von Funktionen in *.jar mittels Eclipse Java Basics - Anfänger-Themen 4
0 Reguläre Ausdrücke und Funktionen Java Basics - Anfänger-Themen 2
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
B Ausgabe problem in Funktionen Java Basics - Anfänger-Themen 6
L Hat java keine virtuellen funktionen?? Java Basics - Anfänger-Themen 6
A Funktionen und Arrays Java Basics - Anfänger-Themen 2
C funktionen nur static? Java Basics - Anfänger-Themen 6
M MouseAdapter - auf Funktionen zugreifen Java Basics - Anfänger-Themen 13
L Funktionen addRow und deleteRow Java Basics - Anfänger-Themen 6
D Mathematische Funktionen Zeichnen Java Basics - Anfänger-Themen 2
D Variableninhalt über mehrere Funktionen ? Java Basics - Anfänger-Themen 3
Out.println Funktionen Java Basics - Anfänger-Themen 7
D Verständnisfrage zu Funktionen Java Basics - Anfänger-Themen 6
B Mathematische Funktionen Java Basics - Anfänger-Themen 3
D Warum sollte ich bestehende Funktionen "extend"en? Java Basics - Anfänger-Themen 32
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
N Funktionen berechnen in Java Java Basics - Anfänger-Themen 18
Kasoki Eigene Funktionen / Commands Java Basics - Anfänger-Themen 14
Q Nach Stringvorgabe bestimmte funktionen ausführen Java Basics - Anfänger-Themen 3
K zwei Funktionen, ein BufferedReader? Java Basics - Anfänger-Themen 8
A Static in Funktionen bringen Java Basics - Anfänger-Themen 7
J Funktionen in Java? Java Basics - Anfänger-Themen 3
A frage zur integration von funktionen anderer klassen Java Basics - Anfänger-Themen 2
T Funktionen Plotter - Klassen/Methoden/Funktionen Java Basics - Anfänger-Themen 13
A ChatGUI: Scrollbar und Funktionen Java Basics - Anfänger-Themen 5
S wann static Funktionen wann nicht Java Basics - Anfänger-Themen 6
W Funktionen mit Default werten Java Basics - Anfänger-Themen 10
G Müssen globale Funktionen immer "static" sein? Java Basics - Anfänger-Themen 13
B Funktionen ausführen vorm Beenden des Programmes Java Basics - Anfänger-Themen 13
M Mathematische Funktionen zeichnen. Java Basics - Anfänger-Themen 2
A mathematische Funktionen grafisch darstellen Java Basics - Anfänger-Themen 8
G Funktionen? Java Basics - Anfänger-Themen 7
S 2 regex-Funktionen benötigt Java Basics - Anfänger-Themen 4
S anzahl von funktionen Java Basics - Anfänger-Themen 9
B in der .Jar funktionieren nicht alle Funktionen Java Basics - Anfänger-Themen 18
X Threads+Funktionen Java Basics - Anfänger-Themen 6
S Explorer funktionen nachprogrammieren Java Basics - Anfänger-Themen 2
P Rexex - stringtokenizer - String funktionen allgemein Java Basics - Anfänger-Themen 3
G Problem mit nicht statischen Funktionen Java Basics - Anfänger-Themen 7
S Return bei Funktionen Java Basics - Anfänger-Themen 8
ven000m Rekursive Funktionen - Frage Java Basics - Anfänger-Themen 16
D Funktionen/Methoden/Variablen includieren? :) Java Basics - Anfänger-Themen 4
V funktionen/Variablen f. unterschiedliche Klassen definierne? Java Basics - Anfänger-Themen 6
M mehreren klassen die gleichen funktionen bereitstellen? Java Basics - Anfänger-Themen 3
G Über undo, copy, cat, paste, delete Funktionen Java Basics - Anfänger-Themen 3
S Rekursive Funktionen in imperative Funktionen umwandeln Java Basics - Anfänger-Themen 2
Niki_Tesla 2 Fragen / Funktionen? Java Basics - Anfänger-Themen 4
B Code von Java-Funktionen einsehen Java Basics - Anfänger-Themen 2
B Mathematische funktionen Berechnen und ausgeben lassen?WIE? Java Basics - Anfänger-Themen 2
H Parameterübergabe zwischen einzelnen Funktionen Java Basics - Anfänger-Themen 4
L Redundanz mit Array vermeiden. Java Basics - Anfänger-Themen 42
A Wiederholte Ausgabe vermeiden Java Basics - Anfänger-Themen 16
S java.nio.file.FileSystemException bei Dateizugriff vermeiden Java Basics - Anfänger-Themen 7
I Input/Output 3 Werte in Datei schreiben, duplikate vermeiden Java Basics - Anfänger-Themen 4
T doppelten Code vermeiden Java Basics - Anfänger-Themen 1
S Variablen viele Instanzvariablen vermeiden Java Basics - Anfänger-Themen 14
D Wie "unchecked cast" hier vermeiden? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben