Nếu bạn muốn thúc đẩy những người "chuyên nghiệp" về lý do bạn sử dụng ORM cho quản lý / khách hàng, thì lý do là gì?
Hãy thử và giữ lại một lý do cho mỗi câu trả lời để chúng tôi có thể xem điều gì được bình chọn là lý do tốt nhất
Nếu bạn muốn thúc đẩy những người "chuyên nghiệp" về lý do bạn sử dụng ORM cho quản lý / khách hàng, thì lý do là gì?
Hãy thử và giữ lại một lý do cho mỗi câu trả lời để chúng tôi có thể xem điều gì được bình chọn là lý do tốt nhất
Câu trả lời:
Làm cho việc truy cập dữ liệu trở nên trừu tượng và di động hơn. Các lớp triển khai ORM biết cách viết SQL dành riêng cho nhà cung cấp, vì vậy bạn không cần phải làm vậy.
Lý do quan trọng nhất để sử dụng ORM là để bạn có thể có một mô hình kinh doanh hướng đối tượng, phong phú và vẫn có thể lưu trữ nó và viết các truy vấn hiệu quả một cách nhanh chóng dựa trên cơ sở dữ liệu quan hệ. Theo quan điểm của tôi, tôi không thấy bất kỳ lợi thế thực sự nào mà một ORM tốt mang lại cho bạn khi so sánh với các DAL được tạo khác ngoài các loại truy vấn nâng cao mà bạn có thể viết.
Một loại truy vấn tôi đang nghĩ đến là truy vấn đa hình. Một truy vấn ORM đơn giản có thể chọn tất cả các hình dạng trong cơ sở dữ liệu của bạn. Bạn nhận được một bộ sưu tập các hình dạng trở lại. Nhưng mỗi trường hợp là một hình vuông, hình tròn hoặc hình chữ nhật tùy theo dấu hiệu phân biệt của nó.
Một loại truy vấn khác sẽ là một loại truy vấn háo hức tìm nạp một đối tượng và một hoặc nhiều đối tượng hoặc bộ sưu tập có liên quan trong một lệnh gọi cơ sở dữ liệu. Ví dụ: Mỗi đối tượng hình dạng được trả về với các tập hợp đỉnh và cạnh của nó được điền.
Tôi rất tiếc khi không đồng ý với rất nhiều người khác ở đây, nhưng tôi không nghĩ rằng bản thân việc tạo mã là một lý do đủ tốt để sử dụng ORM. Bạn có thể viết hoặc tìm nhiều mẫu DAL tốt cho trình tạo mã không có khái niệm hoặc chi phí hiệu suất như ORM.
Hoặc, nếu bạn nghĩ rằng bạn không cần biết cách viết SQL tốt để sử dụng ORM, một lần nữa, tôi không đồng ý. Có thể đúng rằng từ quan điểm viết các truy vấn đơn lẻ, việc dựa vào ORM dễ dàng hơn. Tuy nhiên, với ORM, quá dễ dàng để tạo ra các quy trình hoạt động kém khi các nhà phát triển không hiểu cách truy vấn của họ hoạt động với ORM và SQL mà họ dịch sang.
Có một lớp dữ liệu hoạt động dựa trên nhiều cơ sở dữ liệu có thể là một lợi ích. Tuy nhiên, nó không phải là thứ mà tôi phải dựa vào đó thường xuyên.
Cuối cùng, tôi phải nhắc lại rằng theo kinh nghiệm của tôi, nếu bạn không sử dụng các tính năng truy vấn nâng cao hơn của ORM, có các tùy chọn khác giải quyết các vấn đề còn lại với ít học hơn và ít chu kỳ CPU hơn.
Ồ đúng rồi, một số nhà phát triển thấy làm việc với ORM's rất thú vị, vì vậy ORM's cũng tốt từ quan điểm giữ cho các nhà phát triển của bạn hài lòng. =)
Tăng tốc độ phát triển. Ví dụ: loại bỏ mã lặp lại như ánh xạ các trường kết quả truy vấn với các thành viên đối tượng và ngược lại.
Hỗ trợ đóng gói OO các quy tắc nghiệp vụ trong lớp truy cập dữ liệu của bạn. Bạn có thể viết (và gỡ lỗi) các quy tắc nghiệp vụ bằng ngôn ngữ ứng dụng ưa thích của mình, thay vì ngôn ngữ trình kích hoạt và thủ tục được lưu trữ rườm rà.
Tạo mã bảng điện tử cho các hoạt động CRUD cơ bản. Một số khuôn khổ ORM có thể kiểm tra trực tiếp siêu dữ liệu cơ sở dữ liệu, đọc các tệp ánh xạ siêu dữ liệu hoặc sử dụng thuộc tính lớp khai báo.
Bạn có thể chuyển sang phần mềm cơ sở dữ liệu khác nhau một cách dễ dàng vì bạn đang phát triển đến một phần mềm trừu tượng.
Để giảm thiểu sự trùng lặp của các truy vấn SQL đơn giản.
Lý do tôi đang xem xét nó là để tránh mã được tạo từ các công cụ DAL của VS2005 (ánh xạ lược đồ, TableAdapters).
DAL / BLL mà tôi đã tạo hơn một năm trước đang hoạt động tốt (đối với những gì tôi đã xây dựng nó) cho đến khi người khác bắt đầu sử dụng nó để tận dụng một số chức năng đã tạo (mà tôi không biết ở đó)
Có vẻ như nó sẽ cung cấp một giải pháp trực quan và rõ ràng hơn nhiều so với giải pháp DAL / BLL từ http://wwww.asp.net
Tôi đã nghĩ về việc tạo trình tạo mã SQL Command C # DAL của riêng mình, nhưng ORM trông giống như một giải pháp thanh lịch hơn
Biên dịch và kiểm tra các truy vấn.
Khi công cụ cho ORM được cải thiện, bạn sẽ dễ dàng xác định tính đúng đắn của các truy vấn nhanh hơn thông qua các thử nghiệm và lỗi thời gian biên dịch.
Việc biên dịch các truy vấn của bạn sẽ giúp các nhà phát triển tìm ra lỗi nhanh hơn. Đúng? Đúng. Việc biên dịch này có thể thực hiện được vì các nhà phát triển hiện đang viết các truy vấn bằng mã bằng cách sử dụng các đối tượng hoặc mô hình nghiệp vụ của họ thay vì chỉ các chuỗi câu lệnh như SQL hoặc SQL.
Nếu sử dụng các mẫu truy cập dữ liệu chính xác trong .NET, bạn có thể dễ dàng kiểm tra đơn vị logic truy vấn của mình dựa trên bộ sưu tập bộ nhớ. Điều này giúp tăng tốc độ thực thi các bài kiểm tra của bạn vì bạn không cần phải truy cập cơ sở dữ liệu, thiết lập dữ liệu trong cơ sở dữ liệu hoặc thậm chí tạo ra một bối cảnh dữ liệu đầy đủ. [EDIT] Điều này không đúng như tôi nghĩ nó là đơn vị kiểm tra trong trí nhớ có thể đưa ra những thách thức khó vượt qua. Nhưng tôi vẫn thấy các bài kiểm tra tích hợp này dễ viết hơn những năm trước. [/ EDIT]
Điều này ngày nay chắc chắn có liên quan hơn một vài năm trước khi câu hỏi được đặt ra, nhưng đó có thể chỉ là trường hợp của Visual Studio và Entity Framework nơi mà kinh nghiệm của tôi nằm. Thêm môi trường của riêng bạn nếu có thể.
Tôi nghĩ rằng có rất nhiều điểm tốt ở đây (tính di động, dễ phát triển / bảo trì, tập trung vào mô hình kinh doanh OO, v.v.), nhưng khi cố gắng thuyết phục khách hàng hoặc ban quản lý của bạn, tất cả chỉ nằm ở việc bạn sẽ tiết kiệm được bao nhiêu tiền bằng cách sử dụng một ORM .
Thực hiện một số ước tính cho các nhiệm vụ điển hình (hoặc thậm chí các dự án lớn hơn có thể sắp xảy ra) và bạn (hy vọng!) Sẽ nhận được một số đối số cho việc chuyển đổi khó có thể bỏ qua.
các lớp .net sử dụng các mẫu mã smith
http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1
Tại sao mã một cái gì đó có thể được tạo ra.
Tôi nghĩ một khuyết điểm là ORM sẽ cần một số cập nhật trong POJO của bạn. chủ yếu liên quan đến lược đồ, quan hệ và truy vấn. vì vậy tình huống mà bạn không được cho là thực hiện các thay đổi trong các đối tượng mô hình, có thể là do nó được chia sẻ giữa các đối tượng khác trên máy khách và máy chủ dự án hoặc b / w. vì vậy trong những trường hợp như vậy, bạn sẽ cần phải chia nó thành hai cấp, điều này sẽ đòi hỏi những nỗ lực bổ sung.
tôi là một nhà phát triển Android và như bạn biết, các ứng dụng dành cho thiết bị di động thường có kích thước không lớn, vì vậy nỗ lực bổ sung này để tách biệt mô hình thuần túy và mô hình bị ảnh hưởng bởi orm dường như không có giá trị đầy đủ.
tôi hiểu câu hỏi đó là chung chung. nhưng các ứng dụng dành cho thiết bị di động cũng nằm trong ô chung.