Nhibernate-configuration

提供:Dev Guides
移動先:案内検索

NHibernate-構成

この章では、NHibernateの構成について説明します。 NHibernateを構成できるさまざまな方法があります。 2つの主なグループに分かれています

  • XMLベースの構成
  • コードベースの構成

コードベースの構成

コードベースの構成はNHibernateに組み込まれています。 NHibernate 3の周辺で導入されたもので、これまでコードベースの構成を使用していました。

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());

すべての構成は、C#コードで指定されます。 ここで、新しい構成オブジェクトを取得したことがわかります。次に、NHibernate 3.1で導入された* loquacious構成*を使用してデータベースを構成します。 使用している接続文字列、接続しているデータベース、使用する方言。 マッピングアセンブリもここに直接追加します。

XMLベースの構成

XMLベースの構成を使用している場合は、NHibernateスキーマを使用するスタンドアロンのxmlファイルである hibernate.cfg.xml ファイルを使用するか、アプリまたは web内にそのNHibernate固有の構成を埋め込むことができます。 cfg 。 hibernate.cfg.xmlの名前はデフォルトですが、そのxmlファイルにも任意の名前を使用できます。

NHibernateDemoAppプロジェクトに新しいxmlファイルを追加して、hibernate.cfg.xmlという名前を付けて、XMLベースの構成を見てみましょう。

次の情報を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>

上記のxmlファイルでわかるように、C#で言及されているのと同じ構成を指定しています。

次に、Program.csファイルからこの構成にコメントし、* Configure()メソッドを呼び出します。これにより、以下に示すように *hibernate.cfg.xml ファイルがロードされます。

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();
         }
      }
   }
}

アプリケーションを再度実行すると、同じ出力が表示されます。

Fetch the complete list again

1 Allan Bommer Excellent
2 Jerry Lewis Good