NHibernate - Ikhtisar
Pada bab ini kita akan membahas tentang apa itu NHibernate, platform apa saja yang dapat diimplementasikan, apa saja kelebihannya dan aspek lain yang terkait dengannya.
Apa itu NHibernate?
NHibernate adalah pemeta relasional objek open source yang matang untuk framework .NET. Ini secara aktif dikembangkan, berfitur lengkap dan digunakan dalam ribuan proyek yang sukses. Itu dibangun di atasADO.NET dan versi saat ini adalah NHibernate 4.0.4.
NHibernate adalah pemeta relasional objek .NET open-source dan didistribusikan di bawah GNU Lesser General Public License.
Ini didasarkan pada Hibernate yang merupakan pemeta relasional objek Java yang populer dan memiliki basis kode yang sangat matang dan aktif.
Ini menyediakan kerangka kerja untuk memetakan model domain berorientasi objek ke database relasional tradisional.
NHibernate dimulai oleh Tom Barrett dan proyek ini telah ada sejak Februari 2003, yang merupakan komitmen pertama mereka.
Ini adalah proyek besar dan menyediakan banyak fungsi.
Ada sebuah NuGet package tersedia, yang membuatnya sangat mudah untuk ditambahkan ke proyek.
Mengapa NHibernate?
Sekarang pertanyaannya adalah mengapa kita membutuhkannya object-relational mappers? Itu karena ada keterputusan antara dunia objek dan dunia relasional.
Di dunia objek, semuanya didasarkan pada sekitar objects; kami menyebut objek hal-hal yang memiliki data kami.
Dunia relasional semuanya berbasis set dan kita berurusan dengan tabel dan baris yang berbeda dari dunia objek.
Di dunia objek, kita punya unidirectional associations. Jika pelanggan memiliki penunjuk ke pesanan, itu tidak berarti bahwa pesanan memiliki penunjuk kembali ke pelanggan, mungkin atau mungkin tidak.
Dalam dunia relasional, semua asosiasi adalah bidirectional dan itu bisa dilakukan dengan kunci asing.
Semua asosiasi secara inheren dua arah, jadi ketika kita berurusan dengan pemetaan relasional objek, kita juga perlu berurusan dengan pemutusan ini.
Di dunia objek, kami bekerja dengan pointer yang searah, sedangkan di dunia relasional, kami memiliki kunci asing yang secara inheren dua arah.
Dunia benda memiliki pengertian warisan ini, di mana kendaraan dapat memiliki sejumlah subkelas yang berbeda, jadi mobil adalah jenis kendaraan, perahu adalah jenis kendaraan, dan mobil sport adalah jenis mobil, jenis-jenis ini hubungan warisan.
Dunia relasional tidak memiliki gagasan tentang warisan ini.
Pemetaan
Jadi bagaimana kita memetakan semua ini disjoint relationships?Konsep pemetaan ini berasal dari pemeta relasional objek. Terutama ada tiga hal yang perlu dipahami seperti yang ditunjukkan pada diagram berikut.
Dalam aplikasi Anda, Anda memerlukan definisi kelas, yang biasanya berupa kode C # dan kode .NET-nya yang mewakili kelas kita, seperti kelas Karyawan, kelas Pelanggan, kelas Order, dll.
Di bagian bawah, Anda dapat melihat skema database, yang merupakan milik kami Data Definition Language dalam database relasional yang menentukan seperti apa tabel pelanggan, seperti apa tabel karyawan.
Di antara ini kami memiliki metadata pemetaan yang memberitahu pemeta objek-relasional bagaimana menerjemahkan dari dunia objek di C # ke dunia database dalam hal baris dan kolom dan hubungan kunci asing.
Metadata pemetaan ini dapat direpresentasikan dalam berbagai cara berbeda dan kami akan melihat sejumlah cara berbeda yang paling umum digunakan dalam aplikasi NHibernate.
Itu diwakili oleh HBM (Hibernate Mapping) file, yang merupakan file XML.
Database yang Didukung
NHibernate mendukung berbagai macam database yang berbeda. Setiap database relasional yang ada di luar sana dapat diakses ke NHibernate.
SQL server adalah basis data utama yang didukung, itulah yang digunakan sebagian besar pengembang selama pengembangan, mungkin itu yang paling umum.
Juga works very well with Oracle.
Ini juga mendukung DB2, Firebird, MySQL, PostgreSQL, SQL Lite
Ia juga memiliki ODBC and OLEDB drivers.