Trước khi tôi nói về câu hỏi, một chút giới thiệu trước; Tôi yêu các ORM. Và tôi ghét SQL. Tôi yêu các ORM vì chúng che giấu sự lộn xộn không thân thiện của người dùng với SQL và cung cấp một cách xử lý tích hợp ngôn ngữ tốt với cơ sở dữ liệu.
Tuy nhiên tôi phải thừa nhận rằng SQL có rất nhiều lợi ích, với cái lớn hơn là độ chính xác. Tôi có thể tranh luận khá nhiều về sự phức tạp của một truy vấn SQL, mà không có kiến thức chi tiết về lược đồ cơ sở dữ liệu cơ bản, chỉ bằng cách đi qua truy vấn. Do đó, khi tôi sử dụng SQL, tôi luôn cảnh giác và tôi luôn có một trực giác về nơi mà sự phức tạp của một thành phần đang hướng đến.
Mặt khác, khi sử dụng ORM, tôi bị choáng ngợp bởi sự dễ dàng tích hợp cơ sở dữ liệu, đến nỗi tôi thực sự quên rằng thậm chí còn có một cơ sở dữ liệu. Điều này đã làm tôi khó chịu nhiều lần. Nhiều lần trong quá khứ, tôi đã gọi các phương thức ORM trông ngây thơ, rằng đằng sau hậu trường gọi các cơ sở dữ liệu khổng lồ và đáng sợ tham gia, phá hủy hiệu suất.
Đó là lý do tại sao đối với tôi, sự thật nằm ở đâu đó ở giữa. Tôi thích sử dụng ORM và tôi sẽ tiếp tục làm như vậy, nhưng tôi phải cẩn thận hơn và luôn nghiên cứu ý nghĩa (ở cấp độ SQL) của bất kỳ cuộc gọi phương thức ORM nào. Biết ý nghĩa của một lớp trừu tượng là vàng nguyên chất trong doanh nghiệp này, và biện minh cho việc sử dụng trừu tượng. Bất cứ điều gì khác, giống như tự bắn vào chân mình.