Ich las einen Blogbeitrag von Ben Scheirman über einige NHibernate-Verbesserungen, die er gemacht hat um die Leistung zu erhöhen.
Am Ende des Artikels gibt es:
Lektion # 7: Stellen Sie immer sicher, dass Sie hibernate.default_schema
gesetzt haben
Was meint er mit hibernate.default_schema
?
Ich bin kein DBA, also kann ich Ihnen keine gute Definition des Schemas geben ... (für mich ist es nur 'Datenbank' in SQL Server).
In NHibernate können Sie das Schema zwei Stellen angeben: in den Mapping-Dateien in der Konfiguration.
Mit der Mapping-Datei können Sie das Schema für jede Klasse angeben. Das ist gut, wenn Sie Klassen haben, die von einem anderen Schema auf demselben Server kommen.
In der SessionFactory-Konfiguration können Sie ein Standardschema (Option "default_schema") angeben, das auf alle Klassenzuordnungen angewendet werden soll, die ihr Schema nicht explizit festlegen. Also ist alles ein Fang.
Wenn Sie Ihren Link lesen, scheint dies für die Performance von Vorteil zu sein, denn wenn Sie die Tabelle "Bar" ohne Angabe des Schemas abfragen (z. B. Datenbank ist "Foo" also Schema "Foo.dbo" in SQL Server), ist der Abfrageplan nicht im Cache gespeichert. Dies liegt wahrscheinlich daran, dass der SQL Server versuchen muss, das von der Verbindungszeichenfolge zu verwendende Schema (Initial Catalog, Database usw.) aufzulösen, anstatt es in der Abfrage explizit anzugeben ("Bar" implizit - nicht zwischengespeichert "Foo.dbo .Bar "explizit - zwischengespeichert).
Auch hier bin ich kein dba, also sind diese Definitionen scheiße:)
bearbeiten:
Hier ist ein Link zum Konfigurationskram (für NH 1.2 ... was alt ist ... aber die Option default_schema ist da):
Tags und Links hibernate nhibernate