NHibernate - Konfigurasi

Dalam bab ini, kita akan melihat konfigurasi NHibernate. Kami memiliki cara berbeda untuk mengkonfigurasi NHibernate. Ini terbagi menjadi dua kelompok utama

  • Konfigurasi berbasis XML
  • Konfigurasi berbasis kode

Konfigurasi Berbasis Kode

Konfigurasi berbasis kode dibangun ke dalam NHibernate. Itu diperkenalkan di sekitar NHibernate 3 dan kami telah menggunakan konfigurasi basis kode hingga sekarang.

String Data Source = asia13797\\sqlexpress;
String Initial Catalog = NHibernateDemoDB;
String Integrated Security = True;
String Connect Timeout = 15;
String Encrypt = False;
String TrustServerCertificate = False;
String ApplicationIntent = ReadWrite;
String MultiSubnetFailover = False;

cfg.DataBaseIntegration(x = > { x.ConnectionString = "Data Source + 
   Initial Catalog + Integrated Security + Connect Timeout + Encrypt +
   TrustServerCertificate + ApplicationIntent + MultiSubnetFailover"; 
   
   x.Driver<SqlClientDriver>(); 
   x.Dialect<MsSql2008Dialect>(); 
   x.LogSqlInConsole = true; 
}); 

cfg.AddAssembly(Assembly.GetExecutingAssembly());

Semua konfigurasi ditentukan dalam kode C #. Anda dapat melihat di sini bahwa kami telah mendapatkan objek konfigurasi baru kami, dan kemudian kami gunakanloquacious configurationyang diperkenalkan dengan NHibernate 3.1 untuk mengkonfigurasi database. String koneksi apa yang kami gunakan, database apa yang kami hubungkan dan dialek yang akan digunakan. Kami juga menambahkan perakitan pemetaan kami langsung ke sini.

Konfigurasi Berbasis XML

Jika Anda menggunakan konfigurasi berbasis XML, Anda dapat menggunakan file hibernate.cfg.xml file, yang hanya merupakan file xml mandiri menggunakan skema NHibernate, atau Anda dapat menyematkan konfigurasi khusus NHibernate di dalam aplikasi Anda atau web.cfg. Nama hibernate.cfg.xml secara default, tetapi kita juga dapat menggunakan nama arbitrer untuk file xml tersebut.

Mari kita lihat konfigurasi berbasis XML dengan menambahkan file xml baru ke proyek NHibernateDemoApp dan menyebutnya hibernate.cfg.xml.

Masukkan informasi berikut ke dalam file hibernate.cfg.xml.

<?xml version = "1.0" encoding = "utf-8" ?> 
<hibernate-configuration xmlns = "urn:nhibernate-configuration-2.2"> 
   <session-factory> 
   
      <property name = "connection.connection_string">
         Data Source = asia13797\\sqlexpress;
         Initial Catalog = NHibernateDemoDB;
         Integrated Security = True;
         Connect Timeout = 15;
         Encrypt = False;
         TrustServerCertificate = False;
         ApplicationIntent = ReadWrite;
         MultiSubnetFailover = False;
      </property> 
      
      <property name = "connection.driver_class">
         NHibernate.Driver.SqlClientDriver
      </property> 
		
      <property name = "dialect">
         NHibernate.Dialect.MsSql2008Dialect
      </property> 
		
      <mapping assembly = "NHibernateDemoApp"/>
		
   </session-factory> 
	
</hibernate-configuration>

Seperti yang Anda lihat pada file xml di atas, kami telah menetapkan konfigurasi yang sama seperti yang disebutkan di C #.

Sekarang mari berkomentar tentang konfigurasi ini dari file Program.cs dan panggil saja Configure() metode, yang akan memuat file hibernate.cfg.xml file seperti yang ditunjukkan di bawah ini.

using HibernatingRhinos.Profiler.Appender.NHibernate; 
using NHibernate.Cfg; 
using NHibernate.Dialect; 
using NHibernate.Driver; 

using System; 
using System.Linq; 
using System.Reflection; 

namespace NHibernateDemoApp { 

   class Program { 
      
      static void Main(string[] args) { 
		
         NHibernateProfiler.Initialize(); 
         var cfg = new Configuration(); 
         
         //cfg.DataBaseIntegration(x =>
         
         //{ 
            // x.ConnectionString = "Data Source = asia13797;\\sqlexpress
            Initial Catalog = NHibernateDemoDB;
            Integrated Security = True;
            Connect Timeout = 15;
            Encrypt =False;
            TrustServerCertificate = False;
            ApplicationIntent = ReadWrite;
            MultiSubnetFailover = False"; 
            
            // x.Driver<SqlClientDriver>(); 
            // x.Dialect<MsSql2008Dialect>(); 
            // x.LogSqlInConsole = true; 
         //}); 
         
         //cfg.AddAssembly(Assembly.GetExecutingAssembly());
			
         cfg.Configure();
         var sefact = cfg.BuildSessionFactory();
			
         using (var session = sefact.OpenSession()) { 
            
            using (var tx = session.BeginTransaction()) { 
               var students = session.CreateCriteria<Student>().List<Student>(); 
               Console.WriteLine("\nFetch the complete list again\n"); 
               
               foreach (var student in students) { 
                  Console.WriteLine("{0} \t{1} \t{2} \t{3}", student.ID,
                     student.FirstName, student.LastName, student.AcademicStanding); 
               } 
					
               tx.Commit(); 
            } 
				
            Console.ReadLine(); 
         } 
      } 
   } 
}

Jalankan aplikasi Anda lagi dan Anda akan melihat output yang sama.

Fetch the complete list again

1 Allan Bommer Excellent
2 Jerry Lewis Good