Tôi đang phát triển một ứng dụng web đơn giản hiển thị mô hình miền làm tài nguyên RESTful. Tôi đang lên kế hoạch sử dụng JPA2 (Hibernate) với hỗ trợ REST SpringMVC.Có cách nào để hiển thị các thực thể Hibernate như tài nguyên RESTful mà không có DTO không?
Trong khi sắp xếp các thực thể Hibernate thành XML/JSON, nếu thực thể được tách ra, nó sẽ ném LazyLoadingException cho các liên kết con lười. Nếu thực thể vẫn còn gắn liền với Hibernate Session nó sẽ gần như tải toàn bộ cơ sở dữ liệu.
Tôi đã thử sử dụng Dozer CustomFieldMapper để xác định xem thuộc tính là Bộ sưu tập Hibernate lười biếng không được tải sau đó trả về NULL.
Nhưng nếu chúng ta có liên kết hai hướng Hibernate háo hức tải Nhiều-to-Một bên bên và Dozer sẽ cố gắng sao chép các thuộc tính sẽ kết thúc trong vòng lặp vô hạn dẫn đến lỗi StackOverflow. Công cụ duy nhất xung quanh mà tôi biết để giải quyết vấn đề này là sử dụng DTO và chỉ sao chép các thuộc tính bắt buộc vào các POJO (DTO) sạch và marshalling sau đó vào XML/JSON. Nhưng nó là đau đớn khủng khiếp cho mô hình miền phức tạp để sao chép tài sản bằng tay.
Có cách nào khác sạch/đơn giản hơn để (un) marshall Hibernate thực thể?
Đã sử dụng mã được đề cập trong bài viết, hoạt động tốt. Nhưng cần thử nghiệm trên nhiều loại ánh xạ quan hệ khác nhau. Cảm ơn bạn. –