2011-10-14 36 views
26

Tôi đang sử dụng chế độ ngủ đông và muốn sử dụng truy vấn được đặt tên. nhưng tôi không biết liệu đó có phải là giải pháp tốt hay không? xin vui lòng cung cấp cho tôi những lợi thế của các truy vấn được đặt tên.Ưu điểm của truy vấn được đặt tên trong hibernate?

Khi truy vấn được đặt tên được biên dịch? chúng ta có thể trực tiếp thay đổi truy vấn được đặt tên trong tệp hbm được triển khai trong máy chủ ứng dụng không?

Hãy giúp tôi.

Cảm ơn!

Trả lời

26

Truy vấn được đặt tên được biên dịch khi SessionFactory được khởi tạo (vì vậy, về cơ bản, khi ứng dụng của bạn khởi động).

Rõ ràng lợi thế, do đó, là tất cả tên truy vấn của bạn được xác nhận tại thời điểm đó chứ không phải là thất bại khi thực hiện. Ưu điểm khác là chúng là dễ dàng (-ier) để duy trì - chắc chắn cho các truy vấn phức tạp.

Các bất lợi là tên truy vấn là không tùy biến trong thời gian chạy - bạn có thể xác định/thông số cung cấp, tất nhiên, nhưng ngoài rằng những gì bạn đã xác định là những gì bạn sẽ nhận được; bạn thậm chí không thể thay đổi cách sắp xếp. Một bất lợi khác là bạn sẽ không thể thay đổi truy vấn được đặt tên trong máy chủ ứng dụng đang chạy mà không cần tải lại SessionFactory.

16

Ưu

  • biên soạn và xác nhận tại ứng dụng thời gian khởi động
  • dễ dàng hơn để duy trì hơn xâu nhúng trong mã của bạn
  • HQL và các truy vấn SQL bản địa có thể được sử dụng và thay thế mà không cần mã thay đổi (không cần phải biên dịch lại mã của bạn)

Nhược điểm

  • tĩnh
  • kết quả-bộ lập bản đồ với các truy vấn SQL bản địa đôi khi rườm rà

Vì vậy, tôi nghĩ rằng bạn chắc chắn nên thích các truy vấn tên trên literals chuỗi trong mã của bạn. Khi bạn cần một số loại tạo truy vấn động trong thời gian chạy, bạn nên xem Hibernate Criteria API. Tiêu chuẩn Hibernate không phải lúc nào cũng dễ sử dụng và trực quan, nhưng bạn chắc chắn nên sử dụng nó thay vì tạo chuỗi truy vấn trong thời gian chạy.

HTH

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