iBatis chắc chắn là dễ dàng để ánh xạ đối tượng đến các hệ thống cơ sở dữ liệu cũ.
Gần đây hơn NHibernate 1.2 và 2.0 có bộ tính năng có thể khiến bạn suy nghĩ lại iBatis.
NHibernate hoạt động với các phím tổng hợp, có thể xảy ra thường xuyên trong các cơ sở dữ liệu cũ hơn, chúng không phải lúc nào cũng dễ chịu khi làm việc nhưng hỗ trợ vẫn có sẵn cho điều này.
NHibernate có thể sử dụng các thủ tục được lưu trữ cho các hoạt động CRUD trên các thực thể cũng như các khung nhìn cơ sở dữ liệu.
Bộ sưu tập có thể là các thủ tục được lưu trữ tùy chỉnh hoặc truy vấn SQL. Bộ sưu tập có thể sử dụng thuộc tính ref-property khi mối quan hệ Foreign Key không ánh xạ trực tiếp đến khóa chính ở phía bên kia.
Một số tính năng này có thể lấy đi từ hiệu suất/công suất của nhibernate, nghĩa là tải Lazy với thuộc tính-ref không hoạt động (ở tất cả?), Nhưng hầu hết các trường hợp đều có lý do cho việc này.
điểm khác: (mà không thực sự liên quan đến cơ sở dữ liệu di sản của bạn, nhưng vẫn có thể giúp quyết định chọn công nghệ)
cộng đồng Các Nhibernate xuất hiện phong phú hơn nhiều so với iBatis. Tôi đang ở cả hai danh sách và khối lượng hỗ trợ cho NHibernate là khá lớn so với nhóm iBatis. Vì vậy, hỗ trợ nên được dễ dàng hơn.
Ngoài ra còn có một số lượng lớn các công cụ đóng góp/bên thứ 3 cho NHibernate. Những điều như NHibernate Profiler, Nhibernate Query Analyzer, NHibernate Contrib, Fluent NHibernate để đặt tên một vài.
Có lẽ bạn có thể mở rộng những lợi thế mà bạn tin rằng iBatis hiện có. NHibernate chắc chắn đã khá tích cực gần đây và đã đạt được nhiều tính năng mới, rất nhiều trong số đó làm hỗ trợ trong di sản/khó sửa đổi lược đồ.
Và để trả lời câu hỏi, có, chúng tôi sử dụng NHibernate với các cơ sở dữ liệu cũ có mối quan hệ khủng khiếp, các phím tổng hợp, các mối quan hệ bị hỏng. Chúng tôi vẫn còn có một lượng nhỏ mã dựa trên iBatis. Chúng tôi không còn viết bất kỳ mã iBatis nào nữa.
Điều này sẽ là câu hỏi tiếp theo của tôi trên stackoverflow - cảm ơn bạn đã hỏi! – SRO