# Wie kann ich "Class" in einer DB speichern?



## temi (3. Jun 2018)

Wie kann ich folgende beispielhafte Datenstruktur in einer DB (vermutlich H2, die Frage ist aber eher generell) speichern? Der String ist dabei natürlich nicht das Problem, sondern die "Class".

`Map<Class, String> classes;`

Und wie kann ich die Daten später analog zu `classes.get(typeToFind.getClass());` in der DB finden?

Für einen hilfreichen Vorschlag wäre ich dankbar.


----------



## httpdigest (3. Jun 2018)

Eine Class Instanz ist nur gültig innerhalb eines laufenden JVM Prozesses und kann als solche nicht direkt in einer Datenbank persistiert werden, da sie ja auch Referenzen auf JVM-eigene Laufzeitstrukturen besitzt. Du kannst aber den vollqualifizierten _Namen_ der Klasse in der Datenbank als Zeichenkette speichern und später z.B. per `Class.forName(...)` von der Zeichenkette zu einer Class Instanz wieder auflösen.
Vorschlag für eine DDL (für eine relationale Datenbank):

```
CREATE TABLE class_to_string_map (
  class_key    VARCHAR, -- may be null?
  string_value VARCHAR, -- may be null?
  UNIQUE(class_key)
);
```


----------



## temi (4. Jun 2018)

Super, danke. Hätte man drauf kommen können.


----------

