2011-02-03 32 views
6

Tôi tương đối mới với thế giới phát triển phần mềm. Tôi hiện đang ở trên một dự án, đó là khá lớn, và đó là mã OO phong nha - chủ yếu là sau nguyên tắc Thiết kế theo hướng miền. Tuy nhiên, thường trong khi điều này nghe có vẻ tuyệt vời về lý thuyết, thực tế thì toàn bộ Object Relational Impedance khá tệ, và nó có nghĩa là một số phần của hệ thống khá chậm chỉ sử dụng lớp ORM, trừ khi chúng ta viết các truy vấn SQL tối ưu. Ngoài ra, đôi khi chúng tôi dường như bị kẹt cố gắng xem liệu chúng ta có nên mô hình hóa miền dựa trên hiệu suất của SQL so với các nguyên tắc OO hay không.Ứng dụng tên miền phong phú mà không có ORMs

Điều này khiến tôi hỏi điều này - đây có phải là cách hầu hết các ứng dụng được xây dựng không? Có nghĩa là - có, OO là tốt và tốt - nhưng tôi thấy thật khó để tin rằng với tất cả các vấn đề liên quan đến sự không phù hợp quan hệ đối tượng Object này, đây có phải là cách tốt nhất để xây dựng ứng dụng không? Cách tiếp cận khác mà tôi có thể nghĩ đến là mương ORM và chỉ có mô hình miền, và viết các truy vấn SQL nguyên gốc trực tiếp bằng tay một cách thống nhất. Tôi muốn biết liệu có thực sự các hệ thống phần mềm có kích thước đủ được xây dựng theo cách này hay không.

Tôi xin lỗi nếu tôi có âm thanh n00bish - nhưng tôi mới và muốn biết những phương pháp tiếp cận nào khác đang có.

Trả lời

2

Người ta có thể sử dụng cả hai.

Thành thật mà nói, đối với các sửa đổi và quan điểm đơn giản (bao gồm hiển thị các thực thể liên quan), ORM tạo ra khá nhiều mã giống như tôi viết bằng tay. Vì vậy, lợi thế là tất nhiên tôi không phải viết nó. Ngoài ra, các sửa đổi giản đồ nhỏ được xử lý một cách duyên dáng.

Đối với mọi thứ khác, SQL thuần tuý là vua.

Tôi có ý kiến ​​rằng bất kỳ mã mà thể được tạo ra, nên được tạo ra, miễn là nó không tạo ra một phiên bản rõ ràng không đạt tiêu chuẩn. Tôi nghĩ rằng đây là điểm mấu chốt của tôi: Một số lượng đáng kể mã cơ sở dữ liệu của ứng dụng, có thể được xóa bằng ORM và vẫn hoạt động tốt như mã sql được tạo bằng tay được viết bởi chuyên gia cơ sở dữ liệu.

+0

+1 cho thực tế là các hàng đơn lẻ giống nhau và nhận xét mà tôi hoàn toàn không bao giờ nghe và bắt đầu nghĩ rằng tôi là người duy nhất tin tưởng rằng bất kỳ mã nào có thể được tạo sẽ được tạo. Tuy nhiên, tôi không đồng ý rằng mã được tạo ra ORM hoạt động tốt, thường là do các thiết kế bảng đáng sợ mà bạn nhận được từ việc lập mô hình trên các ý tưởng OO thay vì quan hệ. Nhưng vẫn đáng +1 +1 –

+0

+1 cho câu lệnh "bất kỳ mã nào có thể được tạo nên được tạo". Tôi có lẽ sẽ hậu tố nó với "tốt" - tức là không chỉ tạo mã, tạo mã _good_. Nhưng nguyên tắc là viết tắt. – sfinnie

+0

@Ken Downs, đó sẽ là vấn đề với thiết kế chứ không phải với chính ORM. Nhưng tôi nhận được quan điểm của bạn, và hoàn toàn đồng ý. – Ronnis

3

Đừng xin lỗi vì đã nhận ra điều hiển nhiên. Những người có nhiều kinh nghiệm hơn thường hoàn toàn không nhận ra những gì bạn có: ORM là kỹ thuật tồi, vì chính xác những lý do bạn chỉ định.

Nhưng tôi không muốn rơi vào một nhịp điệu. Các đối số chống lại việc sử dụng phạm vi SQL nhúng từ phong cách, "tôi không muốn có rác trong mã của tôi", um, phong cách, "SQL là xấu xí." Nhưng nó hoạt động, nó nhanh, và đó là kỹ thuật tốt.

+0

đã làm việc với cả ORM và SQL thuần tuý + JDBC/ibatis, tôi vẫn thích viết truy vấn của mình hoặc thậm chí tốt hơn, có DBA của tôi tối ưu hóa truy vấn của tôi, những đối số đó nghe giống như lý do không học (propper) SQL – Harima555

+1

sử dụng ORM không có nghĩa là bạn không có quyền kiểm soát SQL tạo ra hoặc bạn không cần phải có một thiết kế DB tốt. Hơn nữa, nếu bạn cần các kỹ năng đặc biệt để viết các truy vấn SQL, điều đó thường có nghĩa là lược đồ DB của bạn bị hỏng. Lược đồ nên làm cho các truy vấn thường xuyên nhất dễ viết (và nhanh chóng thực thi). Khi tôi sử dụng ORM tôi tạo lược đồ của mình theo cách mà các truy vấn được tạo bởi ORM của tôi rất đơn giản và nhanh chóng. Đây không phải là khoa học tên lửa. –

+0

vì vậy nếu một lược đồ của nó không dễ dàng sử dụng từ ORM, lược đồ bị hỏng ?, tôi không đồng ý, có thể có một số lý do tại sao lược đồ sẽ khác với sử dụng ORM, thường là lược đồ được thiết kế để đáp ứng nhu cầu của doanh nghiệp, không phải nhu cầu hiệu suất của ORM, và nếu tôi phải thiết kế lược đồ của mình để ORM của tôi hạnh phúc và nhanh chóng, bây giờ bị phá vỡ – Harima555

Các vấn đề liên quan