# Tabellen mit Hibernate auslesen



## Samson_Miller (19. Mrz 2009)

Hallo,

meine Anwendung greift sowohl auf eine DB2- als auch SQLServer-Datenbank zu. Jetzt möchte ich in beiden Datenbanken auslesen, welche Tabellen und welche Spalten in der jeweiligen Datenbank existieren.

In DB2 mache ich das mittels:  "SELECT * FROM syscat.columns;" 
und in SQLServer mittels:        "SELECT * FROM INFORMATION_SCHEMA.COLUMNS;"

Mit nur einer Datenbank mache ich das bisher folgendermaßen:

```
session.createQuery("FROM Columns").list;
```

In der Klasse "Columns" ist mittels Annotations festgelegt wie die Metadaten-Tabelle heißt und welche Spalten sie hat. Wenn ich jetzt die gleiche Abfrage gegen den SQLServer schicke, heißt die Tabelle ja anders (nicht mehr syscat.columns sondern INFORMATION_SCHEMA.COLUMNS) und ebenso heißen die Spalten anders. Somit kann ich jetzt die Tabelle nicht mehr auf die Klasse "Columns" mappen.

Wie kann ich unabhängig von der Datenbank mittels Hibernate auslesen welche Tabellen und Spalten in der Datenbank existieren und das Ergebnis auf meine Objekte mappen?


----------



## KSG9|sebastian (19. Mrz 2009)

session.createSQLQuery(..) köntnest verwenden...


----------



## Samson_Miller (19. Mrz 2009)

Soweit war ich auch schon, leider heißen die Attribute der Metadatentabelle in DB2 anders als in SQLServer, somit kann ich das nicht auf ein und das selbe Objekt mappen.


----------



## maki (19. Mrz 2009)

Samson_Miller hat gesagt.:


> Soweit war ich auch schon, leider heißen die Attribute der Metadatentabelle in DB2 anders als in SQLServer, somit kann ich das nicht auf ein und das selbe Objekt mappen.


Bist du sicher dass du ein ORM (wie Hibernate) für diese Aufgabe brauchst bzw. ob es dir hilft?


----------



## Samson_Miller (19. Mrz 2009)

Für alle anderen Datenbankzugriffe in meiner Anwendung verwende ich Hibernate und das klappt super. Eine Alternative wäre an dieser Stelle auf mittels normalen JDBC-Code die Metadaten der Datenbank auszulesen und Hibernate somit zu umgehen. Aber vielleicht muss ich Hibernate ja gar nicht umgehen. Das ist halt die Frage.


----------

