jakieś narzędzie do mapowania obiektu Java na obiekt? [Zamknięte]
231
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.
Jackson (biblioteka JSON) ma metodę new ObjectMapper().convertValue(...). Jackson ma również obsługę adnotacji i miksów adnotacji, więc uważam, że jest to bardzo dobra opcja.
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.
Bardzo, bardzo długo potem, przychodzę zrobić aktualizację, mam nadzieję, że mój komentarz zostanie przeczytany: Teraz Dozer wydaje się martwy, a dobrą opcją jest użycie MapStruct, jest łatwe (adnotacje pomocnicze), szybkie (bez refleksji) ) i wydaje się bezpieczny (w tej chwili). Jest to uwzględnione na liście @Pascal Thivent, ale radzę to (nawet jeśli miałem problemy z używaniem go razem z lombokiem).
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)
Commons-Convert wydaje się nie tylko uśpiony, ale kompletnie zniknął ...
Jim Ferrans
Właściwie, jeśli chcesz dodać Moo do swojej listy, mogę usunąć moją odpowiedź, ponieważ twoja odpowiedź jest zdecydowanie bardziej kompletna. ;)
Geoffrey Wiseman
3
Inna opcja dla Java 8+: erchu.github.io/bean-cp (zrzeczenie się: Jestem autorem tego projektu)
Rafal
1
@TmTron: Zrobiliśmy i ja zredagowaliśmy odpowiedź, aby usunąć ostrzeżenie i odwołać się do adresu URL repozytorium (ponieważ strona główna wciąż odwołuje się do wersji 0.7.5)
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.
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.
tak, ale właściwości, które znajdują się w źródłowej fasoli, ale nie w fasoli docelowej, są po prostu ignorowane. W każdym razie dzięki Pablojim :) Myślę, że muszę iść z Dozerem, ponieważ mamy kilka nazw nieruchomości różnych dla DO i DTO :(
ravinikam 16.09.2009
1
W porządku - nie wiedziałem o tym ... Lista Pascala była imponująca!
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.Odpowiedzi:
Możesz spróbować Dozera .
źródło
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)źródło
Kolejnym jest Orika - https://github.com/orika-mapper/orika
źródło
ModelMapper to kolejna biblioteka, którą warto sprawdzić. Projekt ModelMapper różni się od innych bibliotek tym, że:
Więcej informacji na stronie ModelMapper:
http://modelmapper.org
źródło
Użyj zwykłych beanutils Apache:
http://commons.apache.org/proper/commons-beanutils/
źródło
Jest jeszcze jeden silnik mapowania Java / framework Nomin: http://nomin.sourceforge.net .
źródło
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:
źródło
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.
źródło
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
źródło