2009-11-25 24 views
17

Tôi đang cố gắng tìm ra cách dễ dàng để ánh xạ DTO tới các thực thể không có mã đĩa nồi hơi. Trong khi tôi đã suy nghĩ của việc sử dụng dozer nó xuất hiện để yêu cầu rất nhiều cấu hình xml. Có ai nhìn thấy một thay thế dozer sử dụng một DSL để cấu hình lập bản đồ đậu trong Java tinh khiết?Thay thế cho dozer để lập bản đồ bean?

Lý tưởng nhất là tôi hy vọng sẽ tìm thấy một người lập bản đồ hạt được lấy cảm hứng từ cách Guice làm việc.

+0

Một tùy chọn khác sẽ là http://jtransfo.org/. Điều này cho phép ánh xạ được xác định bằng cách sử dụng chú thích trên TO. Nó có tính năng bổ sung mà bạn có thể có các chuyển đổi bảo mật/tùy chọn dựa trên thẻ. –

+1

hãy xem https://github.com/amgohan/zebra/: (Tự làm đối tượng lập bản đồ và sử dụng ngựa vằn cho cách thống nhất để chèn những người lập bản đồ.) Ngựa vằn đi kèm với một cách đơn giản và thống nhất để: tạo những người lập bản đồ của bạn; quản lý một chiều và ánh xạ ngược trong một lớp; đăng ký những người lập bản đồ của bạn và sử dụng lại chúng ở bất cứ đâu trong ứng dụng của bạn; quản lý ánh xạ sâu. – amgohan

+0

Đây là một lựa chọn khá tốt: http://modelmapper.org/ – cosbor11

Trả lời

9

Tôi cũng đang tìm kiếm các giải pháp thay thế.

Here là mức độ phù hợp rất tốt cho các tùy chọn khác nhau.

16

Nhìn vào Orika.

Orika là một khung công tác lập bản đồ Java Bean sao chép đệ quy (trong số các khả năng khác) dữ liệu từ một đối tượng này sang đối tượng khác. Nó có thể rất hữu ích khi phát triển các ứng dụng nhiều lớp.

+0

Orika đã làm công việc cho tôi, xử lý trường hợp lập bản đồ bộ sưu tập mà không cần nhiều nỗ lực. IMO thư viện rất mạnh và có thể sử dụng. –

3

Từ quan điểm của tôi, cấu hình hoặc mã java để ánh xạ một số thuộc tính đặc biệt luôn cần thiết.

Ở đây tôi muốn để có một DODTO ví dụ

DO:{ 
    id: "id", 
    name:"name", 
    doName1: "doName1", 
    nestedObj: { 
     id: "nestedObjId", 
     name: "nestedObjName" 
    } 
} 

DTO{ 
    id: "", 
    name: "", 
    name1: "" // for mapping doName1 in DO. 
    nestedId: "", //for DT.nestObj.id 
    nestedName: "", //for DT.nestObj.name 
} 

Đối Dozer hoặc Orika cả hai đều có thể tự động khớp với id và tài sản tên giữa DO và DTO mà không cần bất kỳ cấu hình hoặc java mã bởi vì họ là với cùng tên và loại thuộc tính. Nhưng nếu bạn muốn DO.doName1 < ---->DTO.name1 hoặc DO.nestedObj.id < --->DTO.nestedId bạn cần thực hiện một số cấu hình (thông qua xml hoặc java) để báo cho công cụ lập bản đồ bạn định làm điều đó. Tôi nghĩ rằng đối với trường hợp sử dụng của bạn, Dozer, Orika và ModelMapper đều ổn. Nhưng đối với tôi, tôi đang chuyển dự án của tôi từ dozer sang Orika vì mục đích thực hiện. Mặc dù Orika không quá trưởng thành như dozer, không phải như vậy thông minh và đòi hỏi tôi phải làm rất nhiều công việc bổ sung để duy trì cấu hình lập bản đồ tùy chỉnh của tôi. Nếu dự án của bạn không quá quan tâm đến hiệu suất, tôi sẽ giới thiệu bạn dozer, nó rất dễ sử dụng và hỗ trợ rất nhiều tính năng nâng cao. Nếu không, nếu bạn đang mua hiệu suất cao, tôi đề nghị bạn orika.

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