Idee fuer Suchfeldmapping gesucht

Status
Nicht offen für weitere Antworten.

FenchelT

Bekanntes Mitglied
Hallo zusammen,

sry erstmal fuer den bloeden Titel, hoffe bekomme keinen Award dafuer :wink:

Meine Herausforderung ist die folgende:
Ich habe eine Datenbank-Entitaet z.B. Kunde.
Kunde beinhaltet die Attribute nname, vname, (fuer nachname, vorname) usw.

Nun moechte ich dem User eine dyn Suche ermoeglichen.
D.h., es gibt eine GUI mit einer JList, die alle Datenbankfelder enthalten soll, eine Combobox mit diversen Operatoren,
ein Textfeld fuer einen Wert und eine Tabelle die das ganze zusammengesetzt darstellt.

Nun moechte ich in der JList aber nicht die Attribute auflisten sondern, deren eigentliche Bedeutung,
als anstatt vname und nname soll Vorname bzw NAchname aufgefuehrt werden.
Soweit kein Problem, koennte ich z.B. ohne weiteres mit einem alias im SQL realisieren

SELECT vname as vorname, nname as nachname FROM....... WHERE 0=1
und die Felder dann mittels rs.getMetaData() an die JList uebergeben

Somit koennte sich der USer seine Selektion also zusammenklicken, was dann z.B. so in der Tabelle dargestellt wird
Name = 'FenchelT'

Wenn ich dies dann in meinen SQL uebernehme um die eigentliche Selektion durchzufuehren, wuerde das ganze so aussehen

Code:
SELECT feld_1,......,feld_n
FROM tabelle
WHERE name = 'FenchelT'

Und da ist sie auch schon die Herausforderung, das Attribut in der Tabelle heisst nicht name sondern nname.

Wie komme ich also am einfachsten wieder an den eigentlichen Attributsnamen?


Fuer Anregungen waere ich dankbar.

Viele Gruesse
 
T

tuxedo

Gast
Hmm, dann lager halt das mapping der Feldnamen nicht in SQL aus, sondern bastel dir eine Mapping-Funktion. Die Zuordnung könntest du via Properties machen.

D.h. aus der DB kommt ein Feld mit dem Namen "feld_1", und in der Property steht dann:

feld_1 = Name

Das lässt sich dann vorwärts wie rückwärts auflösen.

- Alex
 

FenchelT

Bekanntes Mitglied
Gut, waere eine Moeglichkeit, muesste dann aber die Prop-Datei zur Laufzeit aus den Werten Metadaten des ResultSets schreiben, da ich ansonsten eine statische Prop-Datei haette,
was ich ungluecklich finde, da ich bei einer moeglichen Erweiterung des Datenmodells auch die Pro-Datei
anpassen muesste. Ausserdem muesste ich dann im Vorfeld fuer jede Entitaet die ueber die Suchmaske abgebildet werden
soll, eine eigene Properties-Datei erzeugen.

Ich denke auf jeden Fall mal drueber nach, da ich momentan keine bessere Loesung habe

Danke schonmal fuer DEine Unterstuetzung
 
T

tuxedo

Gast
Naja, ich glaub' egal wie du's drehst und wendest: Du wirst immer 2 Stellen haben an denen du was schrauben musst wenn du das Datenmodell erweiterst.

Eine Technik die einem den Alias ohne zutun in den Feldnamen zurückübersetzt kann ich nicht.

Aber, halt ...

Du könntest dir einen Parser schreiben der die SQL-Statements vor dem Ausführen abfängt, auswertet und eine Translation-Map erstellt. Aber dann gibts Probleme mit iBatis und Hibernate, falls du das verwendest ...

- Alex
 
M

maki

Gast
Sowohl Hibernate als auch iBatis bieten von Haus aus Unterstützung für so etwas an ;)
 
M

maki

Gast
iBatis ist sehr gut für Projekte geegneit, in denen das DB Schema schon existiert, Hibernate ist gut, wenn man bei 0 anfängt und alle freiheiten hat.

Ansonsten kann ich Alex nur zustimmen, du bräuchtest so etwas wie eine Mapping"tabelle" (Map), in der die Java Eigenschaften auf die DB Spaltennamen gemappt sind, und noch eine Map die das ganze umgekehrt.
 
T

tuxedo

Gast
maki hat gesagt.:
Sowohl Hibernate als auch iBatis bieten von Haus aus Unterstützung für so etwas an ;)

Hmm, hab mit ibatis noch nicht so viel gemacht, aber wo bietet denn ibatis die möglichkeit Alias-Feldnamen zurück in die echten Feldnamen zu übersetzen?

- Alex
 
M

maki

Gast
EIne Möglichkeit Spaltennamen auf Eigenschaften zu mappen:
Code:
<sqlMap namespace="Person">
    <select id="getPerson" resultClass="examples.domain.Person">
        SELECT
        PER_ID as id,
        PER_FIRST_NAME as firstName,
        PER_LAST_NAME as lastName,
        PER_BIRTH_DATE as birthDate,
        PER_WEIGHT_KG as weightInKilograms,
        PER_HEIGHT_M as heightInMeters
        FROM PERSON
        WHERE PER_ID = #value#
    </select>
</sqlMap>

Noch eine, mit einer resultmap:
Code:
<resultMap id=”productResult” class=”product”>
    <result property=”id” column=”PRD_ID”/>
    <result property=”description” column=”PRD_DESCRIPTION”/>
</resultMap>

Der umgekehrte Weg, von Eigenschaften auf Spaltennamen:
Code:
<insert id="insertPerson" parameterClass="examples.domain.Person">
        INSERT INTO
        PERSON (PER_ID, PER_FIRST_NAME, PER_LAST_NAME,
        PER_BIRTH_DATE, PER_WEIGHT_KG, PER_HEIGHT_M)
        VALUES (#id#, #firstName#, #lastName#, #birthDate#, #weightInKilograms#, #heightInMeters#)
</insert>

Oi isy (=alles easy)

Nachtrag:
Hmm, hab mit ibatis noch nicht so viel gemacht, aber wo bietet denn ibatis die möglichkeit Alias-Feldnamen zurück in die echten Feldnamen zu übersetzen?
Achso, von alias namen auf echte DB Spaltennamen? k. A. :oops:
 
T

tuxedo

Gast
maki hat gesagt.:
Nachtrag:
Hmm, hab mit ibatis noch nicht so viel gemacht, aber wo bietet denn ibatis die möglichkeit Alias-Feldnamen zurück in die echten Feldnamen zu übersetzen?
Achso, von alias namen auf echte DB Spaltennamen? k. A. :oops:

Jupp, genau das. Das umgekehrte von

Code:
SELECT vname AS vorname, nname AS nachname FROM....... WHERE 0=1

Und da ist mir nix "automatisiertes" bekannt. Eine eigene Schicht die die Statements vor dem Ausführen abfängt, "analysiert" und damit eine Mappingtabelle befüllt wäre das einzigste was mit dazu einfällt.


- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Habt ihr eine Idee wie man Serializierung testen kann..? Allgemeine Java-Themen 6
W Collections Suche etwas Sorted-List-Artiges...hat jemand eine Idee? Allgemeine Java-Themen 13
M kleines KI Programm Idee Allgemeine Java-Themen 7
R Idee für Methodenrumpf Allgemeine Java-Themen 5
G Themen Umsetzungs Idee Allgemeine Java-Themen 4
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
P Idee für Datenverschlüsselung Allgemeine Java-Themen 2
O Tag Cloud Algorithmus Idee gesucht Allgemeine Java-Themen 2
S "Katalog"-Anwendung in Java eine gute Idee? Allgemeine Java-Themen 12
C Idee für Anwendung/ Bücher Allgemeine Java-Themen 8
N Idee für Java Projekt Allgemeine Java-Themen 30
-horn- Kürzester Pfad: Code so eine gute Idee? Allgemeine Java-Themen 7
J ServiceInterface - Runtime() > jemand eine idee? Allgemeine Java-Themen 2
A AOP und folgende Idee Allgemeine Java-Themen 13
T Proxys: Idee für den Callback vom Server zum Client? Allgemeine Java-Themen 3
M Idee zur Realisierung eines Hotkeymanagers in Java Allgemeine Java-Themen 2
G idee für java applikation Allgemeine Java-Themen 3
C Kryptographie-Idee Allgemeine Java-Themen 10
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
S Library fuer Internet-Text-Daten-Quellen..? Allgemeine Java-Themen 8
S Access Restrictions in Eclipse auf Code beschraenken (und nicht fuer Comments) Allgemeine Java-Themen 2
S Generics: Fuer Set<T> ein T-Klassenobjekt erhalten? Allgemeine Java-Themen 3
J Sinnvolle Dateigroesse fuer PDAS-Transfer Allgemeine Java-Themen 2
G Software fuer Auktionshaus Filmundo.de aber wie? Allgemeine Java-Themen 2
R Signatur fuer Applets. Allgemeine Java-Themen 5
J Suche regex-Pattern fuer Liste von Zahlen zwischen 0-100 Allgemeine Java-Themen 6
M Ersatz fuer instanceof Allgemeine Java-Themen 11
F URI Problem bei Parametern fuer Outlook Allgemeine Java-Themen 4
E Was ist ein gutes Design fuer meine Programm? Allgemeine Java-Themen 3
G JML fuer Java 5 Allgemeine Java-Themen 19
M Oeffnen des Standartprogramms fuer XML Dateien aus Java Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben