(Hầu hết) tất cả các ứng dụng được hưởng lợi từ ORM.
Đầu tiên, tôi không đồng ý với những lợi thế bạn liệt kê cho ORM .
- Sử dụng ORM không nhất thiết có nghĩa là bạn không cần biết SQL. Một kiến thức về SQL sẽ giúp hiểu công cụ ORM thực sự đang làm gì, điều này đặc biệt hữu ích trong quá trình gỡ lỗi. Hơn nữa, SQL thực sự có thể được yêu cầu để phát triển các truy vấn phức tạp nằm ngoài khả năng của ORM bạn đã chọn.
- Và như bạn nói, tính di động hiếm khi là một mối quan tâm trong cuộc sống thực.
Thay vào đó, lợi ích thực sự của ORM là:
- ORM tiết kiệm thời gian lập trình viên vì nó tiết kiệm được việc viết hàng tấn logic CRUD bằng SQL
- nhiều ORM bao gồm logic bộ nhớ đệm phức tạp, v.v ... rất khó để viết và gỡ lỗi. Cũng như tiết kiệm thời gian, điều này có thể nâng cao độ tin cậy và khả năng bảo trì của ứng dụng của bạn (hoặc ít nhất là giúp bạn tiết kiệm thời gian để bạn đạt được kết quả tương tự)
- các ORM tốt nhất có một cộng đồng người dùng tích cực phát triển, duy trì và hỗ trợ sản phẩm. Cộng đồng xung quanh SQL tùy chỉnh, tốt nhất là, ít tập trung vào các vấn đề chúng ta cần giải quyết.
Như bạn nhận xét, một mặt trái của ORM là mất hiệu suất. Tuy nhiên, điều này thường có thể được bù đắp bằng cách chi tiêu nhiều phần cứng hơn.
Thông thường, thời gian lập trình viên đắt hơn phần cứng, vì vậy ORM hoàn toàn là một lựa chọn tốt thay vì SQL mã hóa bằng tay.
ORM là tốt nhất cho các ứng dụng với rất nhiều logic cơ sở dữ liệu CRUD khá đơn giản. ORM kém hiệu quả đối với :
- Các ứng dụng cần ít / không có quyền truy cập cơ sở dữ liệu.
- Các ứng dụng chủ yếu phụ thuộc vào các truy vấn phức tạp và rất ít logic CRUD đơn giản
- Các tình huống trong đó hiệu suất là rất quan trọng, nhưng ở đó không có khả năng triển khai phần cứng nhanh hơn
Theo kinh nghiệm của tôi, những tình huống này rất hiếm. Do đó câu trả lời của tôi.