Trong quá trình học việc của mình, tôi đã sử dụng NHibernate cho một số dự án nhỏ hơn mà tôi chủ yếu tự viết mã và thiết kế. Bây giờ, trước khi bắt đầu một số dự án lớn hơn, cuộc thảo luận đã nảy sinh cách thiết kế quyền truy cập dữ liệu và có nên sử dụng lớp ORM hay không. Vì tôi vẫn đang trong thời gian học việc và vẫn coi mình là người mới bắt đầu lập trình doanh nghiệp, nên tôi không thực sự cố gắng thúc đẩy theo quan điểm của mình, đó là việc sử dụng một trình ánh xạ quan hệ đối tượng cho cơ sở dữ liệu có thể dễ dàng phát triển hơn rất nhiều. Các lập trình viên khác trong nhóm phát triển có kinh nghiệm hơn tôi rất nhiều, vì vậy tôi nghĩ tôi sẽ chỉ làm theo những gì họ nói. :-)
Tuy nhiên, tôi không hoàn toàn hiểu hai trong số những lý do chính khiến tôi không sử dụng NHibernate hoặc một dự án tương tự:
- Người ta chỉ có thể xây dựng các đối tượng truy cập dữ liệu của riêng mình bằng các truy vấn SQL và sao chép các truy vấn đó ra khỏi Microsoft SQL Server Management Studio.
- Gỡ lỗi ORM có thể khó.
Vì vậy, tất nhiên tôi có thể chỉ xây dựng lớp truy cập dữ liệu của mình với rất nhiều SELECT
s, v.v., nhưng ở đây tôi bỏ lỡ lợi thế của kết hợp tự động, các lớp proxy tải chậm và nỗ lực bảo trì thấp hơn nếu bảng có một cột mới hoặc một cột bị đổi tên. (Đang cập nhật rất nhiều SELECT
, INSERT
và UPDATE
truy vấn vs cập nhật các cấu hình bản đồ và có thể sắp xếp các lớp học kinh doanh và DTOs.)
Ngoài ra, sử dụng NHibernate, bạn có thể gặp phải những vấn đề không lường trước nếu bạn không hiểu rõ về framework. Đó có thể là, ví dụ, tin tưởng Table.hbm.xml nơi bạn đặt độ dài của chuỗi để được xác thực tự động. Tuy nhiên, tôi cũng có thể hình dung ra các lỗi tương tự trong lớp truy cập dữ liệu dựa trên truy vấn SqlConnection “đơn giản”.
Cuối cùng, những lập luận được đề cập ở trên có thực sự là lý do chính đáng để không sử dụng ORM cho một ứng dụng doanh nghiệp dựa trên cơ sở dữ liệu không? Có lẽ có những lập luận khác mà họ / tôi có thể đã bỏ qua?
(Có lẽ tôi nên nói thêm rằng tôi nghĩ rằng đây giống như ứng dụng dựa trên .NET / C # “lớn” đầu tiên sẽ yêu cầu làm việc theo nhóm. Các phương pháp hay, được coi là khá bình thường trên Stack Overflow, chẳng hạn như kiểm tra đơn vị hoặc tích hợp liên tục, không - tồn tại ở đây cho đến nay.)