Tôi có một số đối tượng Java có khả năng tồn tại lâu bền với tất cả các @annotations trong ứng dụng web của tôi. Tất cả các đối tượng này nằm trong một lớp dữ liệu. Có thực tiễn tốt nhất để sử dụng các đối tượng kiên trì này làm đối tượng truyền dữ liệu không? Ví dụ: nếu tôi muốn trả lại dữ liệu được tìm nạp từ kho dữ liệu, tôi có nên trực tiếp trả lại các đối tượng kiên trì đó hay tôi nên sao chép dữ liệu vào DTO trung gian và chuyển nó trở lại các lớp khác không? Không. Bạn sẽ đề xuất phương pháp nào?Các thực thể kiên trì làm đối tượng truyền dữ liệu
Trả lời
Tôi có thể nói rằng đó là OK để làm như vậy (trong thực tế, lợi thế lớn cho các ORMs đã sử dụng các đối tượng miền trong các lớp khác nhau w/o có DTOs không cần thiết) nếu bạn làm theo các hướng dẫn sau đây:
- Bạn không mở rộng ranh giới phiên tức là, mọi thay đổi liên quan đến cơ sở dữ liệu phải luôn được thực hiện bằng cách sử dụng Lớp truy cập dữ liệu bạn đã xác định và không thông qua các đối tượng được truyền trong các lớp khác.
- Bất kỳ dữ liệu nào bạn cần ở lớp khác (các lớp phía trên Lớp truy cập dữ liệu như Lớp logic nghiệp vụ và Lớp trình bày) được điền sẵn trong các đối tượng này nếu không bạn sẽ nhận được ngoại lệ theo hành vi ORM.
- Không mở rộng ranh giới phiên để giải quyết vấn đề được đề cập trong số 2
Tôi chưa bao giờ cần thêm mức trừu tượng được cung cấp bằng cách sao chép thể hiện kiên trì sang một lớp DTO khác.
Nếu bạn hoàn toàn chắc chắn không có bản sao nào sẽ kết thúc trong Bộ nhớ phiên hoặc sẽ được lưu giữ/di chuyển sang một phiên bản khác/bất kỳ điều gì, không cần phải làm điều đó.
Nếu bạn cần giữ các đối tượng này qua nhiều phiên/yêu cầu thì điều đó có ý nghĩa.
Một trường hợp sử dụng khác là khi bạn cần phân tách loginc và lớp kiên trì rất kỹ lưỡng (tức là trao đổi các lớp kiên trì khác nhau) thì khớp nối thông qua các chú thích có thể gây phiền toái.
- 1. Đối tượng Python kiên trì
- 2. UIBezierPath kiên trì với dữ liệu lõi
- 3. javax.ejb.EJBException khi kiên trì một thực thể
- 4. Sự cố khi kiên trì Thực thể
- 5. Sự kiên trì trên đối tượng Java CI-Bayes
- 6. Nối tiếp các đối tượng truyền dữ liệu trong .NET
- 7. JavaQuartz Công việc kiên trì
- 8. MSMQ cho sự kiên trì?
- 9. Truyền dữ liệu đối tượng bằng nút UIButton
- 10. tìm kiếm cơ sở dữ liệu giá trị khóa được phân phối cho sự kiên trì
- 11. kiên trì Blob Streams với NHibernate
- 12. Khi sử dụng Đất nung làm giải pháp kiên trì
- 13. Haskell đồng thời và kiên trì
- 14. Kiên trì một đối tượng trong Hibernate trong khi có khóa chính đã biết.
- 15. Hiểu kiên trì đối tượng toàn cầu trong Python WSGI apps
- 16. JPA POJO làm đối tượng dữ liệu
- 17. Tự động tạo các bảng cơ sở dữ liệu từ các đối tượng, khung thực thể
- 18. Là một đối tượng truyền dữ liệu giống như đối tượng giá trị?
- 19. Hiệu quả truyền dữ liệu đối tượng tùy chỉnh giữa các hoạt động Android [Mono Android]
- 20. Các trường công cộng trong một đối tượng truyền dữ liệu
- 21. Sử dụng các đối tượng truyền dữ liệu trong ejb3 được coi là thực hành tốt nhất
- 22. Kết nối và kiên trì với HBase
- 23. Thực hiện tham chiếu đối tượng khung thực thể như nhau cho cùng một đối tượng cơ sở dữ liệu
- 24. Không thể truyền đối tượng loại WhereSelectListIterator
- 25. Cột Ngày/Thời gian Mysql và kiên trì Java
- 26. Làm thế nào để xử lý sự kiên trì xác thực người dùng trong IOS?
- 27. Truyền đối tượng trong RedirectToAction
- 28. Thực hành tốt nhất cho sự kiên trì ngay bây giờ là gì?
- 29. dịch vụ grails với các phạm vi khác nhau cho sự kiên trì
- 30. Kiến trúc 3 lớp - truyền dữ liệu giữa các lớp
+1 cũng cho biết. Đây chính là cách chúng tôi sử dụng chúng trong sản phẩm của chúng tôi. –