alat apa pun untuk objek java ke pemetaan objek? [Tutup]
231
Saya mencoba untuk mengubah DO ke DTO menggunakan java dan mencari alat otomatis sebelum mulai menulis sendiri. Saya hanya ingin tahu apakah ada alat gratis yang tersedia untuk hal yang sama.
Jackson (perpustakaan JSON) memiliki metode new ObjectMapper().convertValue(...). Jackson juga memiliki dukungan untuk anotasi dan anotasi-mixin jadi saya merasa ini pilihan yang sangat bagus.
Dozer adalah mapper Java Bean ke Java Bean yang secara rekursif menyalin data dari satu objek ke objek lainnya. Biasanya, Java Beans ini terdiri dari berbagai jenis kompleks.
Dozer mendukung pemetaan properti sederhana, pemetaan tipe kompleks, pemetaan dua arah, pemetaan implisit-eksplisit, serta pemetaan rekursif. Ini termasuk memetakan atribut koleksi yang juga membutuhkan pemetaan di tingkat elemen.
Lama sekali, saya datang untuk membuat pembaruan, saya harap komentar saya akan terbaca: Sekarang Dozer tampaknya sudah mati, dan pilihan yang baik adalah menggunakan MapStruct, mudah (mendukung anotasi), cepat (tanpa refleksi ) dan tampaknya aman (saat ini). Ini termasuk dalam daftar Thascent @Pascal, tapi saya menyarankannya (bahkan jika saya punya masalah dengan menggunakannya bersama dengan lombok).
Commons-BeanUtils : ConvertUtils -> Metode utilitas untuk mengubah nilai skalar String ke objek Kelas yang ditentukan, String array ke array dari Kelas yang ditentukan.
Commons-Lang : ArrayUtils -> Operasi pada array, array primitif (seperti int []) dan array pembungkus primitif (seperti Integer []).
Kerangka pegas : Pegas memiliki dukungan yang sangat baik untuk PropertyEditors, yang juga dapat digunakan untuk mengubah Objek ke / dari Strings.
Dozer : Dozer adalah mapper Java Bean to Java Bean yang kuat namun sederhana yang secara rekursif menyalin data dari satu objek ke objek lainnya. Biasanya, Java Beans ini terdiri dari berbagai jenis kompleks.
ModelMapper : ModelMapper adalah kerangka pemetaan objek cerdas yang secara otomatis memetakan objek satu sama lain. Ia menggunakan pendekatan berbasis konvensi untuk memetakan objek sambil menyediakan API aman refactoring sederhana untuk menangani kasus penggunaan tertentu.
MapStruct : MapStruct adalah generator kode kompilasi-waktu untuk pemetaan kacang, menghasilkan cepat (tidak ada penggunaan refleksi atau serupa), kode pemetaan dependensi-kurang dan jenis-aman saat runtime.
Orika : Orika menggunakan pembuatan kode byte untuk membuat pemetaan cepat dengan overhead yang minimal.
Selma : Kompilasi kode-generator waktu untuk pemetaan
JMapper : Pembuatan bean mapper menggunakan Annotation, XML atau API (tampaknya mati, terakhir diperbarui 2 tahun yang lalu)
Smooks : The Smooks JavaBean Cartridge memungkinkan Anda untuk membuat dan mengisi objek Java dari data pesan Anda (yaitu, ikat data ke) (disarankan oleh superfilin dalam komentar). (Tidak lagi dalam pengembangan aktif)
Commons-Convert : Commons-Convert bertujuan untuk menyediakan pustaka tunggal yang didedikasikan untuk tugas mengkonversi objek dari satu jenis ke yang lain. Tahap pertama akan fokus pada konversi Object to String dan String to Object. (tampaknya mati, pembaruan terakhir 2010)
Transmorph : Transmorph adalah pustaka java gratis yang digunakan untuk mengubah objek Java dari satu tipe menjadi objek dari tipe lain (dengan tanda tangan lain, mungkin parameter). (tampaknya mati, pembaruan terakhir 2013)
EZMorph : EZMorph adalah pustaka java sederhana untuk mengubah Objek ke Objek lain. Ini mendukung transformasi untuk primitif dan Objek, untuk array multidimensi dan transformasi dengan DynaBeans (tampaknya sudah mati, terakhir diperbarui 2008)
Morph : Morph adalah kerangka kerja Java yang memudahkan interoperabilitas internal suatu aplikasi. Ketika informasi mengalir melalui aplikasi, ia mengalami banyak transformasi. Morph menyediakan cara standar untuk mengimplementasikan transformasi ini. (tampaknya mati, pembaruan terakhir 2008)
Lorentz : Lorentz adalah kerangka kerja konversi objek-ke-objek umum. Ini menyediakan API sederhana untuk mengkonversi objek Java dari satu jenis menjadi objek dari jenis lain. (sepertinya mati)
OTOM : Dengan OTOM, Anda dapat menyalin data apa pun dari objek apa pun ke objek lain. Kemungkinannya tidak terbatas. Selamat datang di "Musim Gugur". (sepertinya mati)
Orika adalah kerangka pemetaan Java Bean yang secara rekursif menyalin (di antara kemampuan lain) data dari satu objek ke objek lainnya. Ini bisa sangat berguna ketika mengembangkan aplikasi berlapis-lapis.
Orika berfokus pada mengotomatisasi sebanyak mungkin, sambil memberikan penyesuaian melalui konfigurasi dan ekstensi jika diperlukan.
Orika memungkinkan pengembang untuk:
Peta objek yang kompleks dan sangat terstruktur
"Ratakan" atau "Bentangkan" objek dengan memetakan properti bersarang ke properti tingkat atas, dan sebaliknya
Buat pemetaan saat dalam perjalanan, dan terapkan penyesuaian untuk mengontrol sebagian atau semua pemetaan
Buat konverter untuk kontrol penuh atas pemetaan set objek tertentu di mana saja dalam grafik objek - berdasarkan jenis, atau bahkan dengan nama properti tertentu
Menangani proksi atau objek yang ditingkatkan (seperti yang dimiliki Hibernate, atau berbagai kerangka kerja tiruan)
Terapkan pemetaan dua arah dengan satu konfigurasi
Peta ke instance kelas konkret yang sesuai untuk kelas atau antarmuka abstrak target
Tangani pemetaan terbalik
Menangani konvensi kompleks di luar spesifikasi JavaBean.
Orika menggunakan pembuatan kode byte untuk membuat pemetaan cepat dengan overhead yang minimal.
static void copyProperties(Object dest, Object orig)
-Salin nilai properti dari kacang asal ke kacang tujuan untuk semua kasus di mana nama properti sama.
ya, tetapi properti yang ada di kacang sumber, tetapi tidak di kacang tujuan hanya diabaikan. Terima kasih lagian Pablojim :) Saya pikir saya harus pergi dengan Dozer karena kami memiliki beberapa nama properti yang berbeda untuk DO dan DTO :(
ravinikam
1
Cukup adil - saya tidak tahu ini ... Daftar Pascal cukup mengesankan!
Ini sangat mudah digunakan untuk kasus-kasus sederhana, cukup masuk akal untuk kasus-kasus yang lebih kompleks, walaupun masih ada beberapa area di mana saya bisa membayangkan memperbaikinya untuk kompleksitas yang lebih jauh.
Anda juga dapat mencoba kerangka pemetaan berdasarkan Dozer, tetapi dengan deklarasi pemetaan Excel. Mereka punya beberapa alat dan fitur keren tambahan. Periksa di http://openl-tablets.sf.net/mapper
new ObjectMapper().convertValue(...)
. Jackson juga memiliki dukungan untuk anotasi dan anotasi-mixin jadi saya merasa ini pilihan yang sangat bagus.Jawaban:
Anda bisa mencoba Dozer .
sumber
Ada beberapa perpustakaan di sana:
Commons-BeanUtils : ConvertUtils -> Metode utilitas untuk mengubah nilai skalar String ke objek Kelas yang ditentukan, String array ke array dari Kelas yang ditentukan.
Commons-Lang : ArrayUtils -> Operasi pada array, array primitif (seperti int []) dan array pembungkus primitif (seperti Integer []).
Kerangka pegas : Pegas memiliki dukungan yang sangat baik untuk PropertyEditors, yang juga dapat digunakan untuk mengubah Objek ke / dari Strings.
Dozer : Dozer adalah mapper Java Bean to Java Bean yang kuat namun sederhana yang secara rekursif menyalin data dari satu objek ke objek lainnya. Biasanya, Java Beans ini terdiri dari berbagai jenis kompleks.
ModelMapper : ModelMapper adalah kerangka pemetaan objek cerdas yang secara otomatis memetakan objek satu sama lain. Ia menggunakan pendekatan berbasis konvensi untuk memetakan objek sambil menyediakan API aman refactoring sederhana untuk menangani kasus penggunaan tertentu.
MapStruct : MapStruct adalah generator kode kompilasi-waktu untuk pemetaan kacang, menghasilkan cepat (tidak ada penggunaan refleksi atau serupa), kode pemetaan dependensi-kurang dan jenis-aman saat runtime.
Orika : Orika menggunakan pembuatan kode byte untuk membuat pemetaan cepat dengan overhead yang minimal.
Selma : Kompilasi kode-generator waktu untuk pemetaan
JMapper : Pembuatan bean mapper menggunakan Annotation, XML atau API(tampaknya mati, terakhir diperbarui 2 tahun yang lalu)Smooks : The Smooks JavaBean Cartridge memungkinkan Anda untuk membuat dan mengisi objek Java dari data pesan Anda (yaitu, ikat data ke) (disarankan oleh superfilin dalam komentar).(Tidak lagi dalam pengembangan aktif)Commons-Convert : Commons-Convert bertujuan untuk menyediakan pustaka tunggal yang didedikasikan untuk tugas mengkonversi objek dari satu jenis ke yang lain. Tahap pertama akan fokus pada konversi Object to String dan String to Object. (tampaknya mati, pembaruan terakhir 2010)Transmorph : Transmorph adalah pustaka java gratis yang digunakan untuk mengubah objek Java dari satu tipe menjadi objek dari tipe lain (dengan tanda tangan lain, mungkin parameter).(tampaknya mati, pembaruan terakhir 2013)EZMorph : EZMorph adalah pustaka java sederhana untuk mengubah Objek ke Objek lain. Ini mendukung transformasi untuk primitif dan Objek, untuk array multidimensi dan transformasi dengan DynaBeans(tampaknya sudah mati, terakhir diperbarui 2008)Morph : Morph adalah kerangka kerja Java yang memudahkan interoperabilitas internal suatu aplikasi. Ketika informasi mengalir melalui aplikasi, ia mengalami banyak transformasi. Morph menyediakan cara standar untuk mengimplementasikan transformasi ini.(tampaknya mati, pembaruan terakhir 2008)Lorentz : Lorentz adalah kerangka kerja konversi objek-ke-objek umum. Ini menyediakan API sederhana untuk mengkonversi objek Java dari satu jenis menjadi objek dari jenis lain.(sepertinya mati)OTOM : Dengan OTOM, Anda dapat menyalin data apa pun dari objek apa pun ke objek lain. Kemungkinannya tidak terbatas. Selamat datang di "Musim Gugur".(sepertinya mati)sumber
Satu lagi adalah Orika - https://github.com/orika-mapper/orika
sumber
ModelMapper adalah perpustakaan lain yang patut dilihat. Desain ModelMapper berbeda dari perpustakaan lain dalam hal itu:
Lihatlah situs ModelMapper untuk info lebih lanjut:
http://modelmapper.org
sumber
Gunakan Apache commons beanutils:
http://commons.apache.org/proper/commons-beanutils/
sumber
Ada satu lagi mesin pemetaan Java / kerangka kerja Nomin: http://nomin.sourceforge.net .
sumber
Saya sarankan Anda mencoba JMapper Framework .
Ini adalah Java bean to Java bean mapper, memungkinkan Anda untuk melakukan petikan data secara dinamis dengan anotasi dan / atau XML.
Dengan JMapper Anda dapat:
sumber
Saya senang menambahkan Moo sebagai opsi, meskipun jelas saya bias terhadapnya: http://geoffreywiseman.github.com/Moo/
Ini sangat mudah digunakan untuk kasus-kasus sederhana, cukup masuk akal untuk kasus-kasus yang lebih kompleks, walaupun masih ada beberapa area di mana saya bisa membayangkan memperbaikinya untuk kompleksitas yang lebih jauh.
sumber
Anda juga dapat mencoba kerangka pemetaan berdasarkan Dozer, tetapi dengan deklarasi pemetaan Excel. Mereka punya beberapa alat dan fitur keren tambahan. Periksa di http://openl-tablets.sf.net/mapper
sumber