2012-07-04 78 views
18

Trong dự án phát triển của tôi, tôi đang sử dụng JPA (ngủ đông) làm công nghệ OR Mapping để truy cập cơ sở dữ liệu. Đôi khi tôi gặp phải các vấn đề về hiệu năng và các khó khăn kỹ thuật khi tôi ánh xạ bảng DB tới các thực thể trực tiếp cho mối quan hệ phức tạp.Ánh xạ SQL Xem đối tượng JPA

Tôi tìm giải pháp khác là ánh xạ chế độ xem DB cho các thực thể JPA. Điều này làm cho mã hóa dễ dàng hơn và đôi khi hiệu suất là tốt hơn. Bạn có nghĩ rằng đó là một mô hình chống sử dụng JPA theo cách này?

+0

Không, không phải vậy. Tại sao nó lại? –

+1

Bất cứ điều gì làm việc tốt hơn cho bạn rõ ràng không phải là "chống mẫu". tter cho bạn ... – DataNucleus

Trả lời

12

Đây không phải là giải pháp thay thế và không phải là chống mẫu. Có một chủ đề trên mapping JPA Entities to SQL Views. Nó cung cấp cho bạn đủ thông tin cho dù sử dụng phương pháp này hay không.

Cá nhân, tôi thích các lớp Java hơn và do đó tôi sử dụng Result Classes Constructor Expression. Nó instantiates và populates đối tượng của lớp được cung cấp dựa trên kết quả truy vấn trả về.

Bạn có thể xem cả hai phương pháp này làm tăng hiệu suất và giảm độ phức tạp của cấu trúc.

+2

Tôi cũng thích ánh xạ kết quả với một lớp kết quả, nhưng tôi có một số nghi ngờ về cách tiếp cận thực thể tùy chỉnh. Theo thông số kỹ thuật, các thực thể JPA phải có trường '@ Id'; tuy nhiên, bạn có thể có chế độ xem với các bản ghi trùng lặp. Làm thế nào để bạn xử lý tình huống đó? –

+0

Đó là một câu hỏi hay.Bạn có nghĩ rằng việc tạo cột băm từ nhiều cột của chế độ xem sẽ hữu ích không? Nó có thể hoạt động như khóa chính. – JMelnik

+0

@JMelnik Tôi cũng rất muốn đạt được với các lớp Java. Tôi có một câu hỏi liên quan đến biểu thức xây dựng và câu hỏi của tôi là nếu biểu thức xây dựng được sử dụng, làm thế nào ORDER BY thuộc tính được sử dụng? Xem ví dụ [this] (http://stackoverflow.com/questions/33852430/jpql-not-a-selected-expression-error) nơi tôi có một truy vấn phức tạp và tôi không thể làm ORDER BY – user75ponic

0

Tôi đã gặp sự cố với liên kết JMelnik vui lòng cung cấp: Tôi đã tạo truy vấn phức tạp dưới dạng Chế độ xem trong Javadb, sau đó cố kéo chế độ xem vào biểu mẫu, nhưng Netbeans không cho phép tôi thả nó (do đó tôi có thể không autocreate bảng ràng buộc tôi nhìn thấy vào liên kết đó tôi không phải là người duy nhất có kinh nghiệm này

giải pháp mà làm việc cho tôi:..

Tạo Xem trong db, cho SQL phức tạp của mình với tham gia

"Tạo thực thể từ cơ sở dữ liệu" trong gói thực thể và đặt tên là xxxViewName

  • Đảm bảo một trường trong thực thể được xác định là khóa, bằng cách thêm "@Id" phía trên nó.

Tạo java truy vấn kiên trì trong Navigator:

  • Đảm bảo mẫu thiết kế là có thể nhìn thấy, sau đó nhấn chuột phải "Các thành phần khác" trong Navigator và chọn Add From Palette> Java Persistence> Query

  • Định cấu hình truy vấn: KHÔNG sử dụng "show xxxViewName" thông thường (không thành công vì JPA không hỗ trợ hiển thị). Sử dụng Chọn w từ xxxViewName w"

Tạo java Danh sách kết quả bền bỉ trong Navigator:

  • tương tự để tạo ra Query Hãy chắc chắn để thiết lập Danh sách của Loại Các tham số để

Bind. JTS của bạn vào danh sách

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