NHibernate - Genel Bakış

Bu bölümde, NHibernate'in ne olduğu, hangi tüm platformların uygulanabileceği, avantajları ve bununla ilgili diğer yönleri tartışacağız.

NHibernate nedir?

NHibernate, .NET çerçevesi için olgun, açık kaynaklı bir nesne ilişkisel eşleyicidir. Aktif olarak geliştirildi, tam özellikli ve binlerce başarılı projede kullanıldı. Üstüne inşa edilmiştirADO.NET ve mevcut sürüm NHibernate 4.0.4.

  • NHibernate, açık kaynaklı bir .NET nesne ilişkisel eşleştiricisidir ve GNU Lesser General Public License.

  • Popüler bir Java nesne ilişkisel eşleştiricisi olan Hibernate'e dayalıdır ve çok olgun ve aktif bir kod tabanına sahiptir.

  • Nesne yönelimli bir etki alanı modelini geleneksel bir ilişkisel veritabanına eşlemek için bir çerçeve sağlar.

  • NHibernate, Tom Barrett ve bu proje ilk taahhütleri olan Şubat 2003'ten beri var.

  • Bu büyük bir proje ve çok sayıda işlevsellik sağlıyor.

  • Var NuGet package kullanılabilir, bu da bir projeye eklemeyi çok kolaylaştırır.

Neden NHibernate?

Şimdi soru, neden ihtiyacımız olduğu. object-relational mappers? Bunun nedeni, nesne dünyası ile ilişkisel dünya arasında bir kopukluk olmasıdır.

  • Nesne dünyasında her şey objects; Verilerimize sahip olan nesnelere dedik.

  • İlişkisel dünya tümüyle küme tabanlıdır ve biz nesne dünyasından farklı tablolar ve satırlarla uğraşıyoruz.

  • Nesne dünyasında bizde unidirectional associations. Bir müşterinin bir siparişi gösteren bir işaretçisi varsa, bu, bir siparişin müşteriye geri dönen bir işaretçisinin olduğu anlamına gelmez, olabilir veya olmayabilir.

  • İlişkisel dünyada, tüm dernekler bidirectional ve bir yabancı anahtar ile yapılabilir.

  • Tüm dernekler doğası gereği çift yönlüdür, bu nedenle nesne-ilişkisel haritalama ile uğraşırken, bu kopukluğu da ele almamız gerekir.

  • Nesne dünyasında, tek yönlü işaretçilerle çalışıyoruz, oysa ilişkisel dünyada, doğası gereği çift yönlü olan yabancı anahtarlarımız var.

  • Nesne dünyası, bir aracın birkaç farklı alt sınıfa sahip olabileceği bu miras kavramına sahiptir, bu nedenle bir araba bir tür araç, bir tekne bir tür araç ve bir spor araba bir tür araba, bu türler miras ilişkileri.

  • İlişkisel dünya bu miras kavramına sahip değil.

Haritalama

Peki tüm bunları nasıl haritalandıracağız disjoint relationships?Bu eşleme kavramı, nesne-ilişkisel eşleştiriciden gelir. Aşağıdaki şemada gösterildiği gibi anlaşılması gereken başlıca üç şey vardır.

  • Uygulamanızda, genellikle C # kodu olan sınıf tanımlarına ve Çalışan sınıfı, Müşteri sınıfı, Sipariş sınıfı gibi sınıflarımızı temsil eden .NET koduna ihtiyacınız olacak.

  • Altta, bizim olan bir veritabanı şemasını görebilirsiniz. Data Definition Language müşteri tablosunun neye benzediğini, çalışan tablosunun neye benzediğini belirten ilişkisel bir veritabanında.

  • Bunların arasında, nesne-ilişkisel eşleştiriciye satırlar ve sütunlar ve yabancı anahtar ilişkileri açısından C # 'daki nesne dünyasından veritabanı dünyasına nasıl tercüme edileceğini söyleyen eşleme meta verilerine sahibiz.

  • Bu eşleme meta verileri çeşitli farklı şekillerde temsil edilebilir ve NHibernate uygulamasında en tipik olan bu farklı yollardan birkaçına bakacağız.

  • Tarafından temsil edilmektedir HBM (Hibernate Mapping) XML dosyaları olan dosyalar.

Veritabanı Destekli

NHibernate, çok çeşitli farklı veritabanlarını destekler. Mevcut herhangi bir ilişkisel veri tabanına NHibernate'e erişilebilir.

  • SQL sunucusu, desteklenen birincil veritabanıdır, çoğu geliştiricinin geliştirme sırasında kullandığı şey, muhtemelen en yaygın olanıdır.

  • Aynı zamanda works very well with Oracle.

  • Ayrıca DB2, Firebird, MySQL, PostgreSQL, SQL Lite'ı da destekler

  • Ayrıca .... sahip ODBC and OLEDB drivers.