Próbuję przekonwertować DO na DTO przy użyciu java i szukam automatycznego narzędzia, zanim zacznę pisać własne. Chciałem tylko wiedzieć, czy jest dostępne darmowe narzędzie do tego samego.
Próbuję przekonwertować DO na DTO przy użyciu java i szukam automatycznego narzędzia, zanim zacznę pisać własne. Chciałem tylko wiedzieć, czy jest dostępne darmowe narzędzie do tego samego.
Odpowiedzi:
Możesz spróbować Dozera .
Dozer to program mapujący Java Bean na Java Bean, który rekurencyjnie kopiuje dane z jednego obiektu do drugiego. Zazwyczaj te komponenty Java Beans będą różnych typów złożonych.
Dozer obsługuje proste mapowanie właściwości, mapowanie typów złożonych, mapowanie dwukierunkowe, mapowanie jawne jawne, a także mapowanie rekurencyjne. Obejmuje to atrybuty kolekcji mapowań, które również wymagają mapowania na poziomie elementu.
W okolicy jest kilka bibliotek:
Commons-BeanUtils : ConvertUtils -> Metody użyteczne do konwersji wartości skalarnych String na obiekty określonej klasy, Tablice String na tablice określonej klasy.
Commons-Lang : ArrayUtils -> Operacje na tablicach, tablicach pierwotnych (jak int []) i pierwotnych tablicach opakowujących (jak Integer []).
Struktura Spring : Spring ma doskonałe wsparcie dla PropertyEditors, które mogą być również używane do przekształcania obiektów do / z ciągów.
Dozer : Dozer to potężny, ale prosty program mapujący Java Bean na Java Bean, który rekurencyjnie kopiuje dane z jednego obiektu do drugiego. Zazwyczaj te komponenty Java Beans będą różnych typów złożonych.
ModelMapper : ModelMapper to inteligentna struktura mapowania obiektów, która automatycznie mapuje obiekty względem siebie. Wykorzystuje podejście oparte na konwencji do mapowania obiektów, zapewniając jednocześnie prosty interfejs API do refaktoryzacji do obsługi określonych przypadków użycia.
MapStruct : MapStruct to generator kodu czasu kompilacji do mapowania komponentów bean, w wyniku którego powstaje szybki (bez użycia odbicia lub podobny), bez zależności i bezpieczny typ kodu w czasie wykonywania.
Orika : Orika używa generowania kodu bajtowego do tworzenia szybkich mapowań przy minimalnym nakładzie pracy.
Selma : Generator kodu czasu kompilacji dla mapowań
JMapper : Generowanie mapowania komponentów Bean za pomocą Adnotacji, XML lub API (wydaje się martwe, ostatnia aktualizacja 2 lata temu)
Smooks : Kaseta JavaBean Smooks pozwala tworzyć i wypełniać obiekty Java z danych wiadomości (tj. Powiązać dane z) (sugerowane przez superfilin w komentarzach). (Nie jest już aktywnie rozwijany)
Commons-Convert : Commons-Convert ma na celu zapewnienie pojedynczej biblioteki dedykowanej do konwersji obiektu jednego typu na inny. Pierwszy etap skupi się na konwersji obiektu na ciąg i ciągu na obiekt. (wydaje się martwy, ostatnia aktualizacja 2010)
Transmorph : Transmorph to darmowa biblioteka Java służąca do konwersji obiektu Java jednego typu na obiekt innego typu (z inną sygnaturą, ewentualnie sparametryzowaną). (wydaje się martwy, ostatnia aktualizacja 2013)
EZMorph : EZMorph to prosta biblioteka Java do przekształcania obiektu w inny obiekt. Obsługuje transformacje dla prymitywów i obiektów, dla wielowymiarowych tablic i transformacji za pomocą DynaBeans (wydaje się martwy, ostatnia aktualizacja 2008)
Morph : Morph to framework Java, który ułatwia wewnętrzną interoperacyjność aplikacji. Gdy informacja przepływa przez aplikację, przechodzi wiele transformacji. Morph zapewnia standardowy sposób realizacji tych przekształceń. (wydaje się martwy, ostatnia aktualizacja 2008)
Lorentz : Lorentz to ogólny framework konwersji obiekt-obiekt. Zapewnia prosty interfejs API do konwersji obiektów Java jednego typu na obiekt innego typu. (wydaje się martwy)
OTOM : Za pomocą OTOM możesz kopiować dowolne dane z dowolnego obiektu do dowolnego innego obiektu. Możliwości są nieskończone. Witamy w „Jesieni”. (wydaje się martwy)
Kolejnym jest Orika - https://github.com/orika-mapper/orika
Orika to środowisko mapowania Java Bean, które rekurencyjnie kopiuje (między innymi możliwości) dane z jednego obiektu do drugiego. Może to być bardzo przydatne przy tworzeniu aplikacji wielowarstwowych.
Orika koncentruje się na automatyzacji w jak największym stopniu, zapewniając dostosowanie poprzez konfigurację i rozszerzenie w razie potrzeby.
Orika umożliwia programistom:
- Mapuj złożone i głęboko ustrukturyzowane obiekty
- Obiekty „Spłaszcz” lub „Rozwiń”, odwzorowując zagnieżdżone właściwości na właściwości najwyższego poziomu i odwrotnie
- Twórz mapowania w locie i stosuj dostosowania, aby kontrolować niektóre lub wszystkie mapowania
- Twórz konwertery, aby uzyskać pełną kontrolę nad mapowaniem określonego zestawu obiektów w dowolnym miejscu na wykresie obiektowym - według typu, a nawet według konkretnej nazwy właściwości
- Obsługa serwerów proxy lub ulepszonych obiektów (takich jak Hibernacja lub różne fałszywe frameworki)
- Zastosuj mapowanie dwukierunkowe z jedną konfiguracją
- Odwzoruj na instancje odpowiedniej konkretnej klasy dla docelowej klasy abstrakcyjnej lub interfejsu
- Obsługa odwrotnych mapowań
- Obsługa złożonych konwencji wykraczających poza specyfikacje JavaBean.
Orika wykorzystuje generowanie kodu bajtowego do tworzenia szybkich mapowań przy minimalnym nakładzie pracy.
ModelMapper to kolejna biblioteka, którą warto sprawdzić. Projekt ModelMapper różni się od innych bibliotek tym, że:
Więcej informacji na stronie ModelMapper:
Użyj zwykłych beanutils Apache:
static void copyProperties(Object dest, Object orig)
-Kopiuj wartości właściwości od komponentu bean źródłowego do komponentu bean docelowego dla wszystkich przypadków, w których nazwy właściwości są takie same.
Jest jeszcze jeden silnik mapowania Java / framework Nomin: http://nomin.sourceforge.net .
Sugeruję wypróbowanie JMapper Framework .
Jest to program do mapowania komponentów Java Bean na Java Bean, pozwala na dynamiczne przesyłanie danych za pomocą adnotacji i / lub XML.
Z JMapper możesz:
Cieszę się, że mogę dodać Moo jako opcję, chociaż wyraźnie jestem do tego nastawiony: http://geoffreywiseman.github.com/Moo/
Jest bardzo łatwy w użyciu dla prostych przypadków, rozsądnie zdolny do bardziej skomplikowanych przypadków, chociaż wciąż są pewne obszary, w których mogę sobie wyobrazić ulepszenie go dla jeszcze bardziej złożonych.
Możesz także wypróbować strukturę mapowania opartą na Dozerze, ale z deklaracją mapowania Excela. Posiadają narzędzia i dodatkowe fajne funkcje. Sprawdź na http://openl-tablets.sf.net/mapper
new ObjectMapper().convertValue(...)
. Jackson ma również obsługę adnotacji i miksów adnotacji, więc uważam, że jest to bardzo dobra opcja.