Generische Typen für dynamisches Formular

beta20

Top Contributor
Hallo,

ich habe geplant ein dynamisches Webformular zu programmieren, sodass der User verschiedene Dinge (Datentypen) eingeben kann.

Also sowas:
1607505664925.png

Hier gibt es dann Datentypen, wie:
  • String
  • Integer
  • Boolean
  • LocalDate
  • LocalDateTime
  • LocaTime
  • Double
  • List<Object>
Meine Idee wäre nun folgende zwei Attribute anzulegen, in denen ich die Eingabewerte speichere.
  1. private Object value;
  2. private List<Object> valueList
Ich bin mir aber nicht sicher, ob das die beste Lösung ist.
Gäbe es auch die Lösung nur ein Attribut für normale Objekte und Listen zu haben?

Ebenfalls wäre die Frage, wie ich das dann später in der Datenbank abspeichern kann (JPA / Hibernate) ?
Derzeit habe ich dann mehrere Felder in der Datenbank für die verschiedenen Datentypen in einer JPA Entity:
  • boolean valueBoolean;
  • String valueString;
  • LocalDate valueLocalDate;
  • LocalTime valueLocalTime
  • LocalDateTime valueLocalDateTime
  • double valueDouble
  • integer valueInteger
Kann man das so machen oder sollte ich das anders machen?
Danke für Tips und Ratschläge.
 

mrBrown

Super-Moderator
Mitarbeiter
Das ist für dich ein "Anfänger-Themen", wirklich?


Was soll denn List<Object> sein? Der Nutzer soll ja sicher keine komplexe Entität über die Web-Oberfläche angeben...


Meine Idee wäre nun folgende zwei Attribute anzulegen, in denen ich die Eingabewerte speichere.
  1. private Object value;
  2. private List<Object> valueList
Ich bin mir aber nicht sicher, ob das die beste Lösung ist.
Gäbe es auch die Lösung nur ein Attribut für normale Objekte und Listen zu haben?
Object kann auch eine Liste sein.

Allerdings wirst du damit wahrscheinlich nicht glücklich werden. Vermutlich wirst du Form und Attribute als explizite Klassen modellieren müssen, die dann nicht nur den Wert, sondern auch Metainformationen enthalten.


Ebenfalls wäre die Frage, wie ich das dann später in der Datenbank abspeichern kann (JPA / Hibernate) ?
Derzeit habe ich dann mehrere Felder in der Datenbank für die verschiedenen Datentypen in einer JPA Entity:
  • boolean valueBoolean;
  • String valueString;
  • LocalDate valueLocalDate;
  • LocalTime valueLocalTime
  • LocalDateTime valueLocalDateTime
  • double valueDouble
  • integer valueInteger
Kann man das so machen oder sollte ich das anders machen?
Vermutlich solltest du das anders machen. Mit einem Objekt was jeden Typ einmal enthält wirst du vermutlich nicht weit kommen, vielleicht hast du aber auch nur weggelassen, wie man die ganze Form abbildet?
 

beta20

Top Contributor
Das ist für dich ein "Anfänger-Themen", wirklich?
ging mir eher bzgl. generischen Datentypen. Aber kann gerne verschoben werden.
Wann verwende ich "Object", wann verwende ich <T> value ...?

Was soll denn List<Object> sein? Der Nutzer soll ja sicher keine komplexe Entität über die Web-Oberfläche angeben...
Eine Liste wird zB bei Multiselektionen verwendet. Bspw. Selektion von verschiedenenen Länder etc. Dann habe ich eine Liste an Strings...

Allerdings wirst du damit wahrscheinlich nicht glücklich werden. Vermutlich wirst du Form und Attribute als explizite Klassen modellieren müssen, die dann nicht nur den Wert, sondern auch Metainformationen enthalten.

Vermutlich solltest du das anders machen. Mit einem Objekt was jeden Typ einmal enthält wirst du vermutlich nicht weit kommen, vielleicht hast du aber auch nur weggelassen, wie man die ganze Form abbildet?
Ja, das habe ich weggelassen.

Prinzipiell sieht es so aus:
Entity: Form
Entity: FormFields
-> 1 Form hat n FormFields

In FormFields könnte ich dann eben die oben genannten Felder haben und zusätzlich ein Feld "DataType" o.ä..
Anhand dessen wird dann eben gesteuert, welches Feld ich zurückgeben soll (valueString, valueInteger etc.)

Die Frage ist eben, ob ich mit diesem Konzept für die Speicherung der Eingabewerte so am Besten fahre, oder ich eine Property für jeden Datentyp habe... Im Moment würde die "FormFields" - Entity dann eben so aussehen:
  • String dataType; (STRING, INTEGER......)
  • boolean valueBoolean;
  • String valueString;
  • LocalDate valueLocalDate;
  • LocalTime valueLocalTime
  • LocalDateTime valueLocalDateTime
  • double valueDouble
  • integer valueInteger
Prinzipiell muss ich sagen funktioniert das Konzept und ich kann die Werte speichern und später auch wieder aus der Datenbank bekommen, ist nur die Frage, ob das der richtige Weg so ist?
 

mrBrown

Super-Moderator
Mitarbeiter
ging mir eher bzgl. generischen Datentypen. Aber kann gerne verschoben werden.
Wann verwende ich "Object", wann verwende ich <T> value ...?
Achso...das war aus der Frage oben nicht wirklich ersichtlich...

Also einfachste Regel dafür: immer Generics nutzen :)

Gibt wie immer Ausnahmen, aber wenn man die braucht, sollte man schon so tief drin sein, dass man die Frage selbst beantworten kann.


Eine Liste wird zB bei Multiselektionen verwendet. Bspw. Selektion von verschiedenenen Länder etc. Dann habe ich eine Liste an Strings...
Also keine List<Object>, sondern eine Liste der anderen konkreten Typen?

Die Frage ist eben, ob ich mit diesem Konzept für die Speicherung der Eingabewerte so am Besten fahre, oder ich eine Property für jeden Datentyp habe... Im Moment würde die "FormFields" - Entity dann eben so aussehen:
  • String dataType; (STRING, INTEGER......)
  • boolean valueBoolean;
  • String valueString;
  • LocalDate valueLocalDate;
  • LocalTime valueLocalTime
  • LocalDateTime valueLocalDateTime
  • double valueDouble
  • integer valueInteger
Prinzipiell muss ich sagen funktioniert das Konzept und ich kann die Werte speichern und später auch wieder aus der Datenbank bekommen, ist nur die Frage, ob das der richtige Weg so ist?
Du könntest das ganze reduzieren auf Type type + String value. Zur Datenbankseite ist das dann immer ein String (der Typ hat in dem Design für die Datenbank ja sowieso keine Bedeutung), Applikationsseitig nimmst du immer den konkreten Typ und die Konvertierung Typ<->String versteckst du in der Entity.

Alternativ kannst du auch mit Vererbung arbeiten, dann übernimmt das alles die JPA-Implementation: https://en.wikibooks.org/wiki/Java_Persistence/Inheritance#Single_Table_Inheritance

Ist halt die Frage, ob man es lieber explizit oder implizit möchte.

Vermeiden würde ich aber in jedem Fall, X Felder zu haben, wovon jeweils nur genau eins einen Wert haben darf. Auf lange Sicht führt das eher nur zu Problemen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
B instanceof Prüfung für generische Typen Java Basics - Anfänger-Themen 5
O Generische Typen Java Basics - Anfänger-Themen 9
D Generische Typen Java Basics - Anfänger-Themen 20
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
I Generische Funktion Java Basics - Anfänger-Themen 3
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
D Generische Klasse Java Basics - Anfänger-Themen 6
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
M Generische Klassen "FlaschenRegal" Java Basics - Anfänger-Themen 13
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
J Sortierte generische Liste Java Basics - Anfänger-Themen 1
D statische generische Methoden Java Basics - Anfänger-Themen 3
S Wie muss ich die Generische Methode schreiben? Java Basics - Anfänger-Themen 6
M Methoden Generische Klasse - ändern einzelner Attributwerte Java Basics - Anfänger-Themen 2
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
N Generische Schnittstellen Java Basics - Anfänger-Themen 2
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
S Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen? Java Basics - Anfänger-Themen 3
L Generische Liste Java Basics - Anfänger-Themen 4
B Generische Queue programmieren Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
A Probleme mit MergeSort Generische Liste Java Basics - Anfänger-Themen 0
A Generische Methode Java Basics - Anfänger-Themen 4
H Collections List in List<SpecificType> als stat. generische Methode zurückgeben Java Basics - Anfänger-Themen 4
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
M Generische Liste Java Basics - Anfänger-Themen 4
B Generische Methode Java Basics - Anfänger-Themen 2
B Generische Klasse Java Basics - Anfänger-Themen 7
B Generische Methoden Java Basics - Anfänger-Themen 8
F Collections Generische Klasse/Methoden Java Basics - Anfänger-Themen 19
L Generische Warteschlange Java Basics - Anfänger-Themen 8
A Generische Datentypen Java Basics - Anfänger-Themen 8
bluerob generische ArrayList -> erbende Objekte auslesen Java Basics - Anfänger-Themen 24
L Generische Containerklasse Java Basics - Anfänger-Themen 9
V Methoden Umwandlung in generische Methode Java Basics - Anfänger-Themen 8
A Generische Collections und Vererbung Java Basics - Anfänger-Themen 2
S Generische HashMap Java Basics - Anfänger-Themen 2
M Klassen Generische Klassen, Personen und Gruppen Java Basics - Anfänger-Themen 6
L Generische ArrayList, CastProblem Java Basics - Anfänger-Themen 2
W generische Module Java Basics - Anfänger-Themen 2
S Generics und "generische Feldzuweisungen" Java Basics - Anfänger-Themen 5
D Datentypen Generische Collections und Warnings Java Basics - Anfänger-Themen 8
F Generische Methoden Problem Java Basics - Anfänger-Themen 5
E Generische Arrays durch Typecast mit Object-Array Java Basics - Anfänger-Themen 11
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
B Was passiert, wenn eine konkrete Klasse von generische Klasse erbt? Java Basics - Anfänger-Themen 14
B Generische Vererbung was ist der Unterschied? Java Basics - Anfänger-Themen 4
W Generische Klassen Java Basics - Anfänger-Themen 3
W Generische Klassen und Casting Java Basics - Anfänger-Themen 6
J array über generische arraylist Java Basics - Anfänger-Themen 7
N 2 dimensionale generische Arrays Java Basics - Anfänger-Themen 9
H Statische generische Methode Java Basics - Anfänger-Themen 2
G Frage zum Ungang mit Generische Datentypen Java Basics - Anfänger-Themen 4
0x7F800000 generische arrays mal wieder )-; Java Basics - Anfänger-Themen 6
D generische methode <T> void . Java Basics - Anfänger-Themen 9
J Generische Methoden Java Basics - Anfänger-Themen 6
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
S Parameterübergabe: Generische Klasse Java Basics - Anfänger-Themen 4
S generische Felder Java Basics - Anfänger-Themen 2
P Generische Klasse Java Basics - Anfänger-Themen 8
C Generische Klassen, das erste Mal. Java Basics - Anfänger-Themen 8
F Generische Methode - was bringt der Wildcard Operator? Java Basics - Anfänger-Themen 7
F Generische Liste von generischen Objekten. Java Basics - Anfänger-Themen 3
H generische Methoden Java Basics - Anfänger-Themen 5
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
H generische Bausteine, heterogene Datenstrukturen Java Basics - Anfänger-Themen 2
J generische klassen neue Instanz Java Basics - Anfänger-Themen 5
H Generische Klassen. Java Basics - Anfänger-Themen 16
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Enum Typen, was passiert intern mit ihnen? Java Basics - Anfänger-Themen 2
L Abstrakte Typen und Schnittstellen Java Basics - Anfänger-Themen 19
BadBat Variablen Eine Variable mit 2 Typen Java Basics - Anfänger-Themen 38
P Liste sortieren verschiedener generischer Typen Java Basics - Anfänger-Themen 4
T Interface implementieren mit Abstrakten Typen? Java Basics - Anfänger-Themen 4
K Datentypen Kurzform Addition geht, Langform scheitert am Typen Java Basics - Anfänger-Themen 6
K Frage zu Referenzvariablen und deren Typen Java Basics - Anfänger-Themen 6
C Typen aus List<Object[]> ändern Java Basics - Anfänger-Themen 7
D Klassen Feste und veränderbare Typen in Hierarchien Java Basics - Anfänger-Themen 5
B Elementare Typen und Referenztypen Java Basics - Anfänger-Themen 6
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
H Felder mit unterschiedl. Typen sortieren Java Basics - Anfänger-Themen 5
T genericsdeklaration - Typen einschränken Java Basics - Anfänger-Themen 17
alderwaran überladene methoden mit allen möglichen typen aufrufen Java Basics - Anfänger-Themen 3
F Datentypen Zuweisungsproblem bei parametrisierten Typen mit/ohne Wildcards Java Basics - Anfänger-Themen 3
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
D Datentypen mehrdimensionales Array meherer Typen möglich ? Java Basics - Anfänger-Themen 6
R Array eines neuen Typen erstellen und befüllen Java Basics - Anfänger-Themen 2
T mit Typen Date rechnen Java Basics - Anfänger-Themen 6
G Mehrere Typen in einer Datei Java Basics - Anfänger-Themen 5
T Vergleich von generischen Typen Java Basics - Anfänger-Themen 2
M List mit typen füllen Java Basics - Anfänger-Themen 5
J Datei aus unterschiedlichen Typen auslesen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben