2009-08-20 25 views
21

Trong cuốn sách "Các mẫu kiến ​​trúc ứng dụng doanh nghiệp" của mình, Martin Fowler nói về các mô hình bền vững thường được tìm thấy trong phát triển phần mềm và đặc biệt liên quan đến các ORM.Hibernate theo mẫu nào?

Có mẫu Hibernate tuân thủ chặt chẽ nhất không?

Trả lời

14

Hibernate làm cho sử dụng một số mô hình:

(bộ sưu tập proxing)
  • tải Lazy
  • Đơn vị làm việc (như một phần của đối tượng Session)
  • lẽ nhận dạng Map hoặc một cái gì đó tinh vi hơn
  • Siêu dữ liệu bản đồ
  • Query Object cho Criterion API
  • tất cả các đối tượng mẫu structual quan hệ
+0

Tải trọng nhỏ có thể đốt cháy bạn - yêu cầu phiên mở để giải quyết :) – extraneon

+1

Dường như tuân theo tất cả các mẫu này nhưng ở cấp độ cao hơn, tôi có khuynh hướng đồng ý hơn với jpartogi hoặc duffymo hình ảnh có vẻ như theo mô hình miền hoặc trình ánh xạ dữ liệu. – yuos

2

Nếu bạn đang tìm kiếm mẫu thiết kế explicity, sau đó bạn có thể xem xét Hibernate API ưa thích cho việc thực hiện các Active Record Pattern:

Trong kỹ thuật phần mềm, mẫu bản ghi đang hoạt động là mẫu thiết kế thường được tìm thấy trong phần mềm lưu trữ dữ liệu của nó trong r elational cơ sở dữ liệu. Nó được đặt tên bởi Martin Fowler trong cuốn sách của mình Mẫu của Kiến trúc ứng dụng doanh nghiệp. Giao diện cho đối tượng như vậy sẽ bao gồm các chức năng như Chèn, Cập nhật và Xóa, cùng với các thuộc tính tương ứng nhiều hoặc ít trực tiếp cho các cột trong bảng cơ sở dữ liệu cơ bản.

Bản ghi hoạt động là cách tiếp cận để truy cập dữ liệu trong cơ sở dữ liệu. Bảng cơ sở dữ liệu hoặc chế độ xem được gói vào một lớp; do đó một thể hiện đối tượng là gắn liền với một hàng duy nhất trong bảng. Sau khi tạo đối tượng, một hàng mới được thêm vào bảng khi lưu. Bất kỳ đối tượng nào được tải đều nhận được thông tin của nó từ cơ sở dữ liệu; khi một đối tượng được cập nhật , hàng tương ứng trong bảng cũng được cập nhật. Lớp bao bọc triển khai các phương thức truy cập hoặc thuộc tính cho mỗi cột trong bảng hoặc chế độ xem .

+5

Trình ánh xạ dữ liệu dường như gần giống với bản ghi hoạt động hơn, như jpartogi đã chỉ ra. bạn có đồng ý không – yuos

+0

Nếu Hibernate theo sau bản ghi hoạt động, nó không thể làm điều này: "Ổn định thành ngữ --- Hibernate cho phép bạn phát triển các lớp liên tục theo thành ngữ hướng đối tượng tự nhiên bao gồm thừa kế, đa hình, liên kết, thành phần và khung công tác bộ sưu tập Java. các giao diện hoặc các lớp cơ sở cho các lớp liên tục và cho phép bất kỳ lớp hoặc cấu trúc dữ liệu nào tồn tại lâu dài. " – juanitogan

8

Hibernate không theo mẫu ActiveRecord. Mẫu mà Hibernate tuân thủ chặt chẽ nhất là mẫu Datamapper.

+0

phản hồi của duffymo rằng nó tuân theo mô hình miền có vẻ hợp lệ. Có thể cả hai bạn đều đúng không? – yuos

+0

Một vài năm muộn nhưng, dù sao đi nữa. Hibernate cung cấp một cơ chế cho Object-Relational Mapping (ORM); đó là một khung công tác ORM. Nếu bạn nhìn vào mô tả của mô hình Dữ liệu bản đồ, nó khá giống với khái niệm ORM. –

1

Hibernate rõ ràng là domain model. Các đối tượng trong ORM là mô hình miền, do đó bạn không thể thực hiện ORM nếu không có nó.

+0

phản hồi của jpartogi rằng nó tuân theo Data Mapper có vẻ hợp lệ. Có thể cả hai bạn đều đúng không? – yuos

+1

Trình ánh xạ dữ liệu sẽ là một cách để chuyển các giá trị từ một ResultSet và vào một đối tượng. Tôi sẽ nói rằng Mapper dữ liệu tập trung vào việc trích xuất một hàng thành một đối tượng, nhưng ORM thực hiện thêm bước xử lý các vấn đề phức tạp hơn như mối quan hệ 1: m và m: n, tải chậm, bộ nhớ đệm, v.v. – duffymo

+0

Mẫu mô hình miền không xác định bất cứ điều gì về sự kiên trì. Trong các phương thức nhất định như Thiết kế điều khiển tên miền, các mô hình miền thậm chí còn bị buộc phải kiên trì thuyết phục. –

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