2011-06-24 25 views
9

Tôi đã làm việc với một vài ORM khác nhau bằng một vài ngôn ngữ khác nhau - Có vẻ như không có thỏa thuận về loại thingy phải là nguồn và những gì cần được tạo.Những ORM nào hỗ trợ các kiểu luồng công việc

Hãy xem xét những thingies:

  • Entity: Một đối tượng cũ đồng bằng. Nó có công cụ .
  • Người lập bản đồ: Một đối tượng tạo ra một thực thể từ DB hoặc vẫn tồn tại quay lại.
  • Bảng: Bảng cơ sở dữ liệu.
  • Mô hình: Mô hình riêng mô tả trừu tượng thingy.
  • Đấu dây: A mô tả cách các bộ phận của Bảng và thực thể có liên quan.

Điều đó cho chúng tôi những phong cách công việc:

  • Model Driven: Bạn viết một mô hình, và Entity, Mapper, và Bảng được tạo ra.
  • Điều khiển đối tượng: Bạn viết Lớp và Trình lập bản đồ và Bảng được tạo.
  • Điều khiển bảng: Bạn tạo Bảng và Thực thể và Trình ánh xạ được tạo.
  • Wire-up: Bạn viết Class, Table và Wiring, Mapper được tạo.

Các câu hỏi:

  • Có một phong cách tôi đã thất bại trong việc nhận ra?
  • ORM nào hỗ trợ kiểu nào?
  • Có từ vựng chuẩn cho điều này không? (Tôi vừa tạo thành phần trên.)
+1

Chi tiết về môi trường? PC? Linux? Pha trộn? Java? .Mạng lưới? – Dave

+0

Bất kỳ và mọi; Tôi chuyển đổi môi trường rất nhiều và tôi muốn hiểu rõ hơn về lãnh thổ trông như thế nào. Tôi không muốn được blinsided nếu tôi di chuyển từ một dự án Entity Framework đến một dự án Rails và nó đòi hỏi một phong cách khác nhau. –

+0

Câu hỏi rất thú vị! Tôi là một fan hâm mộ lớn của bảng điều khiển (Tôi thích ORMs được sử dụng để tăng tốc độ phát triển CRUD, và bảng điều khiển là cách chính xác để làm điều đó) - tuy nhiên, tôi đã không tìm thấy một bảng thỏa đáng ORM hướng (Hibernate/JPA là khá tiên tiến, nhưng nó vẫn có điểm yếu). – alex

Trả lời

2

Từ những gì tôi đã thấy cho đến nay, sử dụng .NET, Entity Framework hỗ trợ tất cả những điều trên và NHibernate hỗ trợ những gì bạn gọi là Mô hình theo hướng, Thực thể điều khiển và Wire-up (không sử dụng thư viện của bên thứ 3 bổ sung).

NHibernate là một cổng của Hibernate của Java, vì vậy tôi cho rằng chúng hỗ trợ các luồng giống nhau.

0

Mẫu bản ghi hoạt động phổ biến không có độ phức tạp và độ phức tạp của bản đồ. Một lớp mô hình thực hiện các bản ghi hàng trực tiếp với các phương thức cho các phương thức liên tục và miền được trộn lẫn.

Trong thư viện ActiveRecord của Ruby on Rails, bản thân lớp cũng hoạt động như một mô hình cho bảng, với các phương thức lớp để tìm() vv Vì vậy, bạn thường chỉ viết một lớp cho mỗi bảng.

của Ruby AR phản ánh trên bàn tự động (đối với tên bảng, tên cột, và các loại), do đó cũng đủ sau sau khi tạo database schema bằng cách nào đó:

class MyTable << ActiveRecord::Base; end 

row = MyTable.find(7) 
row.my_column1 = "foo" 
row.save() 

http://ar.rubyonrails.org/

1

Tôi xin lỗi nếu điều này có thể là một chủ đề nhỏ, nhưng nó quá lớn để vừa vặn như bình luận, vì vậy hãy cảnh báo trước, nếu người khác không nghĩ rằng nó sẽ giúp chủ đề tôi xóa nó.

Một câu hỏi quan trọng là nếu bạn và ứng dụng của bạn sở hữu và là chỉ khách hàng rằng accesess cơ sở dữ liệu.

Nếu bạn cần làm việc xung quanh một cơ sở dữ liệu hiện có, sau đó ra khỏi khối, tạo cơ sở dữ liệu từ Mô hình có thể nằm ngoài câu hỏi.

Nếu được hệ thống của bạn tạo hay không, hệ thống sẽ truy cập vào nó (có nghĩa là bạn không thể thay đổi ngẫu nhiên cơ sở dữ liệu để thực hiện logic, hoặc thậm chí cực đoan hơn, các trường/bảng khác có thể được thêm vào Các ứng dụng của bên thứ 3), sau đó bạn cần phải suy nghĩ về những quy trình công việc nào sẽ cho phép bạn trừu tượng hóa các chi tiết cơ sở dữ liệu từ việc triển khai của bạn để ngăn bạn phải viết lại chính.

Các yêu cầu này có thể thay đổi trong suốt vòng đời của dự án, vì bạn có thể bắt đầu là người tiêu dùng duy nhất và trong tương lai các ứng dụng khác có thể truy cập trực tiếp cùng một cơ sở dữ liệu. Đây có thể là nơi bạn có luồng công việc "Entity Based" khi bạn gọi nó, nơi bạn có một lớp đại diện cho các bảng DB thực và Mô hình đại diện cho dữ liệu của bạn được sử dụng trong hệ thống của bạn được trừu tượng hóa từ bất kỳ thay đổi nào.

Và đôi khi cần thay đổi, do đó ORM và quy trình làm việc bạn sử dụng phải lưu tâm và ít nhất một phần có khả năng tồn tại trong tương lai có thể nằm ngoài tầm tay bạn. Hãy tưởng tượng một môi trường doanh nghiệp (hay chính trị). Một ngày, một DBA quay lên và nói, "tất cả các truy cập dữ liệu bây giờ là thông qua SPROC". Những loại tình huống này đẩy bạn tới "Bản đồ" khi bạn gọi nó.

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