Ada pria di sini yang bersumpah bahwa JAXB adalah yang terhebat sejak roti iris. Saya penasaran untuk melihat apa yang menurut pengguna Stack Overflow sebagai kasus penggunaan untuk JAXB dan apa yang menjadikannya solusi yang baik atau buruk untuk kasus tersebut.
109
Jawaban:
Saya penggemar berat JAXB karena memanipulasi XML. Pada dasarnya, ini memberikan solusi untuk masalah ini (saya berasumsi sudah terbiasa dengan XML, struktur data Java, dan Skema XML):
Bekerja dengan XML itu sulit. Seseorang membutuhkan cara untuk mengambil file XML - yang pada dasarnya adalah file teks - dan mengubahnya menjadi semacam struktur data, yang kemudian dapat dimanipulasi oleh program Anda.
JAXB akan mengambil Skema XML yang Anda tulis dan membuat sekumpulan kelas yang sesuai dengan skema itu. Utilitas JAXB akan membuat hierarki struktur data untuk memanipulasi XML itu.
JAXB kemudian dapat digunakan untuk membaca file XML, dan kemudian membuat instance kelas yang dihasilkan - sarat dengan data dari XML Anda. JAXB juga melakukan kebalikannya: mengambil kelas java, dan menghasilkan XML yang sesuai.
Saya suka JAXB karena mudah digunakan, dan dilengkapi dengan Java 1.6 (jika Anda menggunakan 1.5, Anda dapat mengunduh JAXB .jars.) Cara membuat hierarki kelas sangat intuitif, dan menurut pengalaman saya, berfungsi dengan baik mengabstraksi "XML" sehingga saya bisa fokus pada "data".
Jadi untuk menjawab pertanyaan Anda: Saya berharap, untuk file XML kecil, JAXB mungkin berlebihan. Ini mengharuskan Anda untuk membuat dan memelihara skema XML, dan menggunakan "metode buku teks standar" untuk memanfaatkan kelas Java untuk struktur data. (Kelas utama, kelas dalam kecil untuk mewakili "node", dan hierarki yang sangat besar dari mereka.) Jadi, JAXB mungkin tidak terlalu bagus untuk daftar linier sederhana "preferensi" untuk suatu aplikasi.
Tetapi jika Anda memiliki skema XML yang agak rumit, dan banyak data yang terkandung di dalamnya, maka JAXB sangat bagus. Dalam proyek saya, saya mengonversi sejumlah besar data antara biner (yang dikonsumsi oleh program C) dan XML (sehingga manusia dapat mengonsumsi dan memodifikasi data itu). Skema XML yang dihasilkan tidak sepele (banyak tingkat hierarki, beberapa bidang dapat diulang, yang lain tidak dapat) sehingga JAXB sangat membantu untuk dapat memanipulasinya.
sumber
Berikut alasan untuk tidak menggunakannya: kinerja menderita. Ada banyak overhead saat marshaling dan unmarshaling. Anda mungkin juga ingin mempertimbangkan API lain untuk pengikatan Objek XML - seperti JiBX: http://jibx.sourceforge.net/
sumber
Ini adalah "ORM untuk XML". Paling sering digunakan bersama JAX-WS (dan memang implementasi Sun dikembangkan bersama) untuk sistem WS Death Star.
sumber
Saya menggunakan JAXB di tempat kerja sepanjang waktu dan saya sangat menyukainya. Ini sempurna untuk skema XML kompleks yang selalu berubah dan terutama bagus untuk akses acak tag dalam file XML.
Saya benci menjadi germo tetapi saya baru saja memulai sebuah blog dan ini benar-benar hal pertama yang saya posting!
Lihat disini:
http://arthur.gonigberg.com/2010/04/21/getting-started-with-jaxb/
sumber
Dengan JAXB Anda dapat secara otomatis membuat representasi XML dari objek Anda (marshalling) dan representasi objek XML (unmarshalling).
Sejauh menyangkut Skema XML, Anda memiliki dua pilihan:
Ada juga beberapa perpustakaan serialisasi XML yang lebih sederhana seperti XStream , Digester atau XMLBeans yang mungkin menjadi alternatif.
sumber
JAXB sangat bagus jika Anda harus membuat kode ke beberapa spesifikasi XML eksternal yang didefinisikan sebagai skema XML (
xsd
).Misalnya, Anda memiliki aplikasi perdagangan dan Anda harus melaporkan perdagangan tersebut ke Aplikasi Pelaporan Perdagangan Uber Lame dan mereka telah memberi Anda
ultra.xsd
untuk melanjutkan. Gunakan$JAVA_HOME/bin/xjc
kompiler untuk mengubah XML menjadi sekumpulan kelas Java (misalnyaUltraTrade
).Kemudian Anda cukup menulis lapisan adaptor sederhana untuk mengonversi objek perdagangan Anda
UltraTrades
dan menggunakanJAXB
untuk mengumpulkan data ke Ultra-Corp. Jauh lebih mudah daripada mengotak-atik mengubah perdagangan Anda ke dalam format XML mereka.Di mana semuanya rusak adalah ketika Ultra-Corp belum benar-benar mematuhi spesifikasi mereka sendiri, dan perdagangan
price
yang mereka milikixsd:float
seharusnya benar-benar dinyatakan sebagaidouble
!sumber
Mengapa kita membutuhkan JAXB? Komponen jarak jauh (ditulis dalam Java) dari layanan web menggunakan XML sebagai sarana untuk bertukar pesan antara satu sama lain. Mengapa XML? Karena XML dianggap opsi ringan untuk bertukar pesan di Jaringan dengan sumber daya terbatas. Seringkali kita perlu mengubah dokumen XML ini menjadi objek dan sebaliknya. Misalnya: Simple Java POJO Employee dapat digunakan untuk mengirim data Karyawan ke komponen jarak jauh (juga program Java).
Pojo ini harus diubah (Marshall) ke dalam dokumen XML sebagai berikut:
Dan pada komponen remote, kembali ke objek Java dari dokumen XML (Un-Marshall).
Apa itu JAXB?
JAXB adalah library atau alat untuk melakukan operasi Marshalling dan UnMarshalling ini. Ini menghindarkan Anda dari sakit kepala ini, sesederhana itu.
sumber
Anda juga dapat melihat JIBX. Ini juga merupakan pengikat data xml yang sangat bagus, yang juga berspesialisasi dalam OTA (Open Travel Alliance) dan didukung oleh server AXIS2. Jika Anda mencari kinerja dan kompatibilitas, Anda dapat memeriksanya:
http://jibx.sourceforge.net/index.html
sumber
JAXB memberikan peningkatan kinerja melalui pengoptimalan marshalling default. JAXB mendefinisikan API programmer untuk membaca dan menulis objek Java ke dan dari dokumen XML, sehingga menyederhanakan pembacaan dan penulisan XML melalui Java.
sumber