-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Cross-Platform Development -- Dialect Fragen
PostPosted: Tue Aug 05, 2008 6:32 am 
Newbie

Joined: Tue Aug 05, 2008 5:07 am
Posts: 7
Location: Dresden, Germany
Hallo,

wir entwickeln in unserer Firma eine Anwendung die als Prämisse Datenbank unabhängig sein soll. Dabei benutzen wir Hibernate als persistence-API, und orientieren uns an dessen Fähigkeiten, was die Modelierung des Datenmodels betrifft. Damit unsere Anwendung in jedem Fall mit einer leeren Datenbank starten kann, und um den Aufwand für Datenmodel Änderungen beim End-Kunden konsistent und klein zu halten, benutzen wir einen primitiven "UpdateManager", der bei Anwendungsstart sämtliche Änderungen seit dem letzten Release an der Datenbank durchführt und archiviert. Die Schnittstelle für ein solches Update muss generisch sein, soll aber Datenbank speziefisches SQL erzeugen. Wir verwenden daher einen Dialekt ähnlich wie Hibernate, der dabei sogar auf Hibernate aufsetzt. Ziel ist, dass beim Entwickeln beispielsweise nur angeben werden muss, dass eine Tabelle erzeugt werden soll, und welche Spalten sie hat. Der Dialekt entscheidet dann, ob zusätzlich eine IDENTITY Eigenschaft auf den Primär-Schlüssel gesetzt werden muss, eine Sequenz dafür erzeugt werden soll, oder ob auf einen Hi/Lo Algorithmus zurückgegriffen werden muss. Beim implementieren einer solchen "CreateTable" Klasse stellt sich mir nun die folgende erste Frage:

Wir verwenden für IDs die "native" Generator Strategie, um die Mappings generisch zu halten. Die Dokumentation sagt, dass bei dieser Strategie Hibernate selbst entscheidet, ob nun "identity", "sequence" oder "hilo" benutzt werden muss. Das passiert aufgrund der Fähigkeiten der verwendeten Datenbank, die sich für Hibernate im Dialect manifestieren (weswegen unserer Dialekt darauf aufsetzt). Es gibt jedoch Datenbanken wie DB2, die sowohl IDENTITY als auch SEQUENCE kennen. Woher weiß Hibernate nun, welches zu verwenden ist, bzw. wird vielleicht standardmäßig das eine oder das andere verwenden? Welches von beiden muss ich also in meiner "CreateTable" Klasse verfolgen, wenn beides möglich ist? Kann ich Hibernate diese Entscheidung abnehmen, indem ich das Mapping spezieller gestallte als nur '<generator class="native" />'? Wenn ja, wie? Die Dokumentation ist etwas dünn...

Ich danke im voraus!

MfG


Hibernate version: 3.2.6GA


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.