NHibernate - ภาพรวม

ในบทนี้เราจะพูดถึงสิ่งที่ NHibernate คืออะไรซึ่งทุกแพลตฟอร์มสามารถนำไปใช้ได้ข้อดีและแง่มุมอื่น ๆ ที่เกี่ยวข้องกับมันคืออะไร

NHibernate คืออะไร?

NHibernate เป็นตัวทำแผนที่เชิงวัตถุเชิงสัมพันธ์แบบโอเพนซอร์สสำหรับเฟรมเวิร์ก. NET ได้รับการพัฒนาอย่างแข็งขันมีคุณลักษณะครบถ้วนและใช้ในโครงการที่ประสบความสำเร็จหลายพันโครงการ มันสร้างขึ้นที่ด้านบนของADO.NET และเวอร์ชันปัจจุบันคือ NHibernate 4.0.4.

  • NHibernate เป็นตัวทำแผนที่เชิงสัมพันธ์เชิงวัตถุ. NET แบบโอเพ่นซอร์สและแจกจ่ายภายใต้ไฟล์ GNU Lesser General Public License.

  • มันขึ้นอยู่กับ Hibernate ซึ่งเป็นตัวทำแผนที่เชิงสัมพันธ์เชิงวัตถุของ Java ที่ได้รับความนิยมและมีฐานรหัสที่เป็นผู้ใหญ่และใช้งานได้ดี

  • จัดเตรียมกรอบสำหรับการแม็ปโมเดลโดเมนเชิงวัตถุกับฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิม

  • NHibernate เริ่มต้นโดย Tom Barrett และโครงการนี้เกิดขึ้นตั้งแต่เดือนกุมภาพันธ์ปี 2546 ซึ่งเป็นการกระทำครั้งแรกของพวกเขา

  • เป็นโครงการขนาดใหญ่และมีฟังก์ชันมากมาย

  • มี NuGet package พร้อมใช้งานซึ่งทำให้ง่ายต่อการเพิ่มลงในโครงการ

ทำไมต้อง NHibernate?

ตอนนี้คำถามคือทำไมเราถึงต้องการ object-relational mappers? เป็นเพราะมีการตัดการเชื่อมต่อระหว่างโลกวัตถุและโลกเชิงสัมพันธ์

  • ในโลกแห่งวัตถุทุกสิ่งล้วนอยู่รอบตัว objects; เราเรียกว่าวัตถุสิ่งที่มีข้อมูลของเรา

  • โลกเชิงสัมพันธ์ล้วนเป็นแบบกำหนดและเรากำลังจัดการกับตารางและแถวที่แตกต่างจากโลกวัตถุ

  • ในโลกของวัตถุเรามี unidirectional associations. หากลูกค้ามีตัวชี้ไปที่คำสั่งซื้อก็ไม่จำเป็นต้องหมายความว่าคำสั่งซื้อนั้นมีตัวชี้กลับไปที่ลูกค้าเสมอไปอาจเป็นไปได้หรือไม่ก็ได้

  • ในโลกเชิงสัมพันธ์ความสัมพันธ์ทั้งหมดคือ bidirectional และสามารถทำได้โดยใช้คีย์ต่างประเทศ

  • การเชื่อมโยงทั้งหมดเป็นแบบสองทิศทางโดยเนื้อแท้ดังนั้นเมื่อเราจัดการกับการทำแผนที่เชิงสัมพันธ์เชิงวัตถุเราจำเป็นต้องจัดการกับการตัดการเชื่อมต่อนี้ด้วย

  • ในโลกวัตถุเรากำลังทำงานกับพอยน์เตอร์ที่มีทิศทางเดียวในขณะที่โลกเชิงสัมพันธ์เรามีคีย์ต่างประเทศซึ่งเป็นแบบสองทิศทางโดยเนื้อแท้

  • โลกแห่งวัตถุมีแนวคิดเรื่องการถ่ายทอดทางพันธุกรรมโดยที่ยานพาหนะสามารถมีคลาสย่อยที่แตกต่างกันได้ดังนั้นรถยนต์จึงเป็นยานพาหนะประเภทหนึ่งเรือเป็นยานพาหนะประเภทหนึ่งและรถสปอร์ตก็คือรถยนต์ประเภทนี้ ความสัมพันธ์ทางมรดก

  • โลกเชิงสัมพันธ์ไม่มีแนวคิดเรื่องการถ่ายทอดทางพันธุกรรม

การทำแผนที่

แล้วเราจะทำแผนที่ทั้งหมดนี้ได้อย่างไร disjoint relationships?แนวคิดของการทำแผนที่นี้มาจากตัวทำแผนที่เชิงวัตถุ ส่วนใหญ่มีสามสิ่งที่ต้องทำความเข้าใจดังแสดงในแผนภาพต่อไปนี้

  • ในแอปพลิเคชันของคุณคุณจะต้องมีคำจำกัดความของคลาสซึ่งโดยทั่วไปคือรหัส C # และรหัส. NET ที่แสดงถึงคลาสของเราเช่นคลาสพนักงานคลาสลูกค้าคลาสสั่งซื้อเป็นต้น

  • ที่ด้านล่างคุณจะเห็นสคีมาฐานข้อมูลซึ่งเป็นไฟล์ Data Definition Language ในฐานข้อมูลเชิงสัมพันธ์ที่ระบุว่าตารางลูกค้ามีลักษณะอย่างไรตารางพนักงานมีลักษณะอย่างไร

  • ในระหว่างนี้เรามีข้อมูลเมตาการแม็ปที่บอกให้ผู้ทำแผนที่สัมพันธ์กับวัตถุว่าจะแปลจากโลกของวัตถุใน C # ไปยังโลกฐานข้อมูลในรูปของแถวและคอลัมน์และความสัมพันธ์ของคีย์ต่างประเทศ

  • ข้อมูลเมตาของการทำแผนที่นี้สามารถแสดงได้หลายวิธีและเราจะดูวิธีต่างๆนี้โดยทั่วไปมากที่สุดในแอปพลิเคชัน NHibernate

  • มันแสดงโดย HBM (Hibernate Mapping) ไฟล์ซึ่งเป็นไฟล์ XML

รองรับฐานข้อมูล

NHibernate รองรับฐานข้อมูลที่หลากหลาย ฐานข้อมูลเชิงสัมพันธ์ใด ๆ ที่มีอยู่สามารถเข้าถึง NHibernate ได้

  • เซิร์ฟเวอร์ SQL เป็นฐานข้อมูลหลักที่ได้รับการสนับสนุนซึ่งเป็นสิ่งที่นักพัฒนาส่วนใหญ่ใช้ในระหว่างการพัฒนาซึ่งอาจเป็นฐานข้อมูลที่พบบ่อยที่สุด

  • นอกจากนี้ยัง works very well with Oracle.

  • นอกจากนี้ยังรองรับ DB2, Firebird, MySQL, PostgreSQL, SQL Lite

  • นอกจากนี้ยังมี ODBC and OLEDB drivers.