Massimo Albertin Blog

Just another WordPress.com weblog

Configurazione di NHibernate 1.2

La configurazione di NHibernate può essere fatta principalmente in tre modi; vediamo un attimo come realizzarli con alcuni esempi:

  • Tramite .Config:

La configurazione è mantenuata all’interno di un una Section custom del file di configurazione dell’applicazione. Prima di tutto bisogna definire la section, che verrà poi utilizzata da NHibernate in questo modo:

<configSections>
  <section name="nhibernate"
           type="System.Configuration.NameValueSectionHandler,
           System, Version=1.0.5000.0, Culture=neutral,
           PublicKeyToken=b77a5c561934e089" />
</configSections>

Una volta impostata la definizione per la configSection è necessario inserire la sezione di configurazione vera e propria. Di seguito riporto un esempio classico di configurazione.

<nhibernate>
  <add key="hibernate.connection.provider"
       value="NHibernate.Connection.DriverConnectionProvider" />
  <add key="hibernate.connection.driver_class"
       value="NHibernate.Driver.SqlClientDriver" />
  <add key="hibernate.dialect"
       value="NHibernate.Dialect.MsSql2005Dialect" />
  <add key="hibernate.connection.connection_string"
       value="Server=.\SQLEXPRESS; Integrated Security=True;
       Database=AdventureWorks;" />
  <add key="hibernate.default_schema" value="dbo" />
</nhibernate>

I primi tre parametri riguardano la tipologia di connessione, utilizzando un DriverConnectionProvieder e il Client per Sql Server (ne esistono un po’ per tutti i principali motori DBMS). Il Dialect indica il particolare dialetto SQL (dal momento che SQL non è proprio identico per ogni DBMS), in questo caso per Sql Server 2005. La ConnectionString anch’essa legata al tipo di DBMS al quale ci si collega (Consultare la documentazione del Driver di connessione specifico). Ed infine nel caso si voglia definire lo schema di default da utilizzare per l’accesso al DB, in questo caso lo standard di SQL server “dbo”.

A livello di codice è necessario, all’avvio di NHibernate, avviare la configurazione, che recupera dal file appena descritto tutti i parametri di cui ha bisogno per effettuare le connessioni al DB.

Configuration configuration = new Configuration();
configuration.AddAssembly("Assembly.Name");

Il metodo AddAssembly non fa altro che indicare l’assembly da cui ricavare le Entity per effettuare il mapping (classi e file .hbm.xml).

  • Tramite File hibernate.cfg.xml

In alternativa è possibile utilizzare un file di configurazione specifico di nhibernate chiamato hibernate.cfg.xml; tale file va copiato nella cartella di output dei file compilati e non incluso come risorsa embedded. La struttura di questo file rispecchia le caratteristiche già evidenziate in precedenza, ma con una sintassi leggermente differente.

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="dialect">
      NHibernate.Dialect.MsSql2005Dialect</property>
    <property name="connection.provider">
      NHibernate.Connection.DriverConnectionProvider</property>
    <property name="hibernate.connection.driver_class">
      NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string">
      Server=.\SQLEXPRESS; Integrated Security=True;
      Database=AdventureWorks;</property>
    <mapping assembly="Assembly.Name" />
  </session-factory>
</hibernate-configuration>

In questo caso il mapping con assembly contenente le entità è stato specificato direttamente all’interno del file di configurazione; ciò eviterà di dover utilizzare il metodo AddAssembly().

Con questo tipo di soluzione si ha il vantaggio di poter utilizzare l’Xsd (nhibernate-configuration-2.2) fornito con la distribuzione di nhibernate e conseguentemente l’intellisense funzionante durante la scrittura del file. Affinchè venga individuato il file XSD è necessario copiarlo all’interno della cartella [VisualStudioFolder]\Xml\Schemas.

A Livello di implementazione è necessario aggiungere una riga di codice, così come mostrato dall’esempo sottostante:

Configuration configuration = new Configuration();
configuration.Configure();
  • Tramite file xml

L’ultima possibilità è quella di utilizzare un file xml, con nome e percorso qualsiasi, con la stessa sintassi già vista per il file hibernate.cfg.xml. Ciò che cambia a livello di codice è che al metodo Configure in questo caso è necessario passare percorso e nome del file di configurazione utilizzato.

Configuration configuration = new Configuration();
configuration.Configure(@"path\filename.xml");

Gennaio 12, 2008 Pubblicato da massimoalbertin | C#, Microsoft.NET, NHibernate | , , , | Ancora nessun commento.