2011-11-14 55 views
9

Cách thực hành tốt nhất để cập nhật mô hình nơi chỉ có một số trường nhất định được cập nhật?Cập nhật một phần Mô hình Hibernate

Ví dụ:

Nếu tôi có một mô hình người với:

Tên sinh Địa chỉ

Và một hình thức mà tôi muốn chỉ cập nhật:

Địa chỉ

Hai tùy chọn tôi có thể hiện xem là:

  1. Để có một mô hình biểu mẫu tùy chỉnh chỉ có địa chỉ - trên postback, hãy gọi cho DB để lấy đối tượng của tôi để điền vào Tên và Ngày sinh, sau đó tiếp tục quay lại DB.
  2. Cập nhật tùy chỉnh SQL để chỉ cập nhật các trường có liên quan.

Tôi muốn sử dụng mô hình ngủ đông nếu có thể, vì vậy hiện tại tôi đang sử dụng # 1.

Có cách nào tốt hơn không?

+0

đây có phải là vấn đề liên quan đến hiệu suất hay sự cố về nghiệp vụ, như tên và địa chỉ đã thay đổi nhưng bạn chỉ muốn cập nhật địa chỉ? –

Trả lời

6

Cách xây dựng bản cập nhật SQL Hibernate có thể được định cấu hình để chỉ cập nhật các trường đã thay đổi, sử dụng an attribute called dynamic-update on the class mapping.

Nếu hibernate rời khỏi chức năng trông hữu ích như điều này bị vô hiệu hóa theo mặc định, đó là bởi vì có sự cân bằng sẽ được thực hiện. Tài liệu được liên kết tiếp tục cho biết:

Cài đặt chèn động và cập nhật động không được thừa kế bởi lớp con, vì vậy chúng cũng có thể được chỉ định trên hoặc các phần tử. Mặc dù các cài đặt này có thể tăng hiệu suất trong một số trường hợp, chúng có thể thực sự làm giảm hiệu suất ở những cài đặt khác.

+4

+1, chỉ cần lưu ý rằng nếu sử dụng chú thích, bạn có thể có '@ org.hibernate.annotations.Entity (dynamicUpdate = true)' – Bozho

+0

Thật không may do hạn chế về thời gian, tôi phải tiếp tục. Điều này có vẻ như là lựa chọn tốt nhất và tôi sẽ thử nghiệm nó khi tôi có cơ hội. Cảm ơn! – Donald

+0

@Donald: hãy lưu ý rằng nếu hibernate để lại chức năng trông hữu ích như thế này, hãy hủy kích hoạt mặc định, bởi vì có các giao dịch được thực hiện. tài liệu tôi liên kết để nói, "Các cài đặt chèn động và cập nhật động không được thừa kế bởi lớp con, vì vậy chúng cũng có thể được chỉ định trên các phần tử hoặc . Mặc dù các cài đặt này có thể tăng hiệu suất trong một số trường hợp, chúng thực sự có thể làm giảm hiệu suất ở những người khác. " –

2

Thực tiễn tốt nhất là bỏ qua tối ưu hóa hiệu suất cho đến khi bạn cần.

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