Tôi sẽ giả sử bạn có nghĩa là viết một DAL mà được truy cập vào SQL, vì đây là một phần phổ biến nhất hiện nay. Nếu các vấn đề lớn nhất trong việc viết một DAL đối với SQL là phần ORM. Đó là, có một sự trở kháng không phù hợp cơ bản giữa lập trình OO và các lược đồ cơ sở dữ liệu quan hệ. Đã có nhiều nỗ lực tuyệt vời, thành công ngay cả khi viết ORM. Nhưng tất cả họ đều bị cùng một vấn đề đó là lợi ích của họ: họ trừu tượng bạn ra khỏi SQL cơ bản được tạo ra. Tại sao đây là một vấn đề, là hiệu suất của cơ sở dữ liệu của bạn là một thành phần quan trọng của hệ thống của bạn hoạt động tổng thể như thế nào. Nhiều ORM (có lẽ là hầu hết) không chỉ có hiệu suất nhỏ hơn nhiều so với các truy vấn chuẩn, nhưng thực sự khuyến khích các mẫu sử dụng sẽ làm giảm hiệu suất đáng kể (duyệt các mối quan hệ liên tục trong vòng lặp khi truy vấn các bộ sưu tập là một ví dụ phổ biến). khác). Tất nhiên, sau khi tìm hiểu chi tiết về API ORM, bạn thường có thể tìm thấy các cách thức xung quanh các ổ gà hiệu năng này.
Việc hiện tại của tôi về trạng thái ORM là tôi muốn nó hoạt động càng ít càng tốt, trong khi vẫn cho tôi hiệu quả của một thư viện vững chắc chăm sóc tất cả các loại hạt và bu lông truy cập dữ liệu. Nói cách khác, bởi vì tôi không nghĩ rằng chúng là "đủ tốt", và có thể không bao giờ được với SQL như là kết thúc, tôi muốn giữ quyền kiểm soát ở mức kim loại trần, và tôi sẽ thả xuống để viết SQL bằng cách tay mà không do dự trong nhiều trường hợp, bất kể ORM, bởi vì tôi biết cách cụ thể tôi muốn dữ liệu được truy vấn cho các nhu cầu nhất định của tôi. Điều này rõ ràng là một cách tiếp cận dễ vỡ hơn để mã hóa hơn nếu bạn sử dụng ORM một cách tôn giáo như nó được dự định, do đó, bạn phải tinh tấn hơn về thử nghiệm đơn vị, SQL injection và tách mối quan tâm thích hợp . Vì vậy, tổng hợp, tôi đồng ý với Ash, mặc dù điều đó không ngụ ý anh ấy/cô ấy đồng ý với tôi :)
Tôi đồng ý rằng với các tình huống khác nhau, câu trả lời sẽ khác, nhưng tôi chỉ tìm kiếm một số kỹ thuật khác nhau cách họ làm việc. –