NHibernate - Tổng quan
Trong chương này, chúng ta sẽ thảo luận về NHibernate là gì, tất cả các nền tảng mà nó có thể được triển khai, lợi thế của nó là gì và các khía cạnh khác liên quan đến nó.
NHibernate là gì?
NHibernate là một trình ánh xạ quan hệ đối tượng mã nguồn mở, trưởng thành cho .NET framework. Nó được phát triển tích cực, có đầy đủ tính năng và được sử dụng trong hàng nghìn dự án thành công. Nó được xây dựng dựa trênADO.NET và phiên bản hiện tại là NHibernate 4.0.4.
NHibernate là một trình ánh xạ quan hệ đối tượng .NET mã nguồn mở và được phân phối dưới GNU Lesser General Public License.
Nó dựa trên Hibernate, một trình ánh xạ quan hệ đối tượng Java phổ biến và nó có một cơ sở mã rất trưởng thành và hoạt động.
Nó cung cấp một khuôn khổ để ánh xạ một mô hình miền hướng đối tượng đến một cơ sở dữ liệu quan hệ truyền thống.
NHibernate được bắt đầu bởi Tom Barrett và dự án này đã được thực hiện từ tháng 2 năm 2003, đây là cam kết đầu tiên của họ.
Đó là một dự án lớn và cung cấp rất nhiều chức năng.
Đây là một NuGet package có sẵn, giúp bạn dễ dàng thêm vào dự án.
Tại sao NHibernate?
Bây giờ câu hỏi là tại sao chúng ta cần object-relational mappers? Đó là bởi vì có một sự không kết nối giữa thế giới đối tượng và thế giới quan hệ.
Trong thế giới đối tượng, mọi thứ đều dựa trên objects; chúng tôi gọi các đối tượng là những thứ có dữ liệu của chúng tôi.
Thế giới quan hệ tất cả đều dựa trên tập hợp và chúng ta đang xử lý các bảng và hàng khác với thế giới đối tượng.
Trong thế giới đối tượng, chúng ta có unidirectional associations. Nếu khách hàng có một con trỏ đến một đơn hàng, điều đó không nhất thiết có nghĩa là một đơn hàng có một con trỏ quay lại khách hàng, điều đó có thể có hoặc có thể không.
Trong thế giới quan hệ, tất cả các liên kết đều bidirectional và nó có thể được thực hiện bằng khóa ngoại.
Tất cả các liên kết vốn có hai chiều, vì vậy khi chúng ta xử lý ánh xạ quan hệ đối tượng, chúng ta cũng cần xử lý sự ngắt kết nối này.
Trong thế giới đối tượng, chúng ta đang làm việc với các con trỏ là một chiều, trong khi trong thế giới quan hệ, chúng ta có các khóa ngoại vốn là hai hướng.
Thế giới vật thể có khái niệm kế thừa này, trong đó một chiếc xe có thể có một số lớp con khác nhau, vì vậy ô tô là một loại phương tiện, thuyền là một loại phương tiện, và xe thể thao là một loại ô tô, những loại này các mối quan hệ thừa kế.
Thế giới quan hệ không có khái niệm kế thừa này.
Lập bản đồ
Vậy làm cách nào để lập bản đồ tất cả những disjoint relationships?Khái niệm ánh xạ này xuất phát từ trình ánh xạ quan hệ đối tượng. Chủ yếu có ba điều cần hiểu như thể hiện trong sơ đồ sau.
Trong ứng dụng của mình, bạn sẽ cần các định nghĩa lớp, thường là mã C # và mã .NET của nó đại diện cho các lớp của chúng ta, chẳng hạn như lớp Nhân viên, lớp Khách hàng, lớp Đơn hàng, v.v.
Ở dưới cùng, bạn có thể thấy một lược đồ cơ sở dữ liệu, là Data Definition Language trong cơ sở dữ liệu quan hệ chỉ định bảng khách hàng trông như thế nào, bảng nhân viên trông như thế nào.
Ở giữa chúng, chúng ta có siêu dữ liệu ánh xạ cho người lập bản đồ quan hệ đối tượng biết cách dịch từ thế giới đối tượng trong C # sang thế giới cơ sở dữ liệu theo hàng và cột và các mối quan hệ khóa ngoại.
Siêu dữ liệu ánh xạ này có thể được biểu diễn theo nhiều cách khác nhau và chúng ta sẽ xem xét một số cách khác nhau này điển hình nhất trong ứng dụng NHibernate.
Nó được đại diện bởi HBM (Hibernate Mapping) các tệp, là tệp XML.
Cơ sở dữ liệu được hỗ trợ
NHibernate hỗ trợ nhiều loại cơ sở dữ liệu khác nhau. Bất kỳ cơ sở dữ liệu quan hệ hiện có nào ngoài kia đều có thể được truy cập vào NHibernate.
Máy chủ SQL là cơ sở dữ liệu được hỗ trợ chính, đó là thứ mà hầu hết các nhà phát triển đang sử dụng trong quá trình phát triển, nó có lẽ là cơ sở dữ liệu phổ biến nhất.
Nó cũng works very well with Oracle.
Nó cũng hỗ trợ DB2, Firebird, MySQL, PostgreSQL, SQL Lite
Nó cũng có ODBC and OLEDB drivers.