Uvod u JiBX
1. Pregled
JiBX je alat za vezanje XML podataka na Java objekte. Pruža solidne performanse u usporedbi s drugim uobičajenim alatima poput JAXB-a.
JiBX je također prilično fleksibilan u usporedbi s drugim Java-XML alatima, koristeći definicije vezanja kako bi se Java struktura odvojila od XML reprezentacije, tako da se svaka može mijenjati neovisno.
U ovom ćemo članku istražiti različite načine koje pruža JiBX vezanja XML-a na Java objekte.
2. Komponente JiBX-a
2.1. Obvezujući dokument s definicijom
Dokument definicije vezivanja navodi kako se vaši Java objekti pretvaraju u XML ili iz njega.
Kompajler vezivanja JiBX uzima jednu ili više definicija vezanja kao ulaz, zajedno sa stvarnim datotekama klase. Definiciju vezanja kompajlira u Java bajtkod dodavanjem u datoteke klase. Jednom kada su datoteke klase poboljšane ovim kompajliranim definicijskim kodom vezanja, spremne su za rad s JiBX runtimeom.
2.2. Alati
Tri su glavna alata koja ćemo koristiti:
- BindGen - za generiranje definicija sheme vezanja i podudaranja iz Java koda
- CodeGen - za stvaranje Java koda i definicije vezanja iz XML sheme
- JiBX2Wsdl - napraviti definiciju vezanja i odgovarajući WSDL zajedno s definicijom sheme iz postojećeg Java koda
3. Konfiguracija Mavena
3.1. Ovisnosti
Moramo dodati jibx-run ovisnost u pom.xml:
org.jibx jibx-trčanje 1.3.1
Najnoviju verziju ove ovisnosti možete pronaći ovdje.
3.2. Dodaci
Da bismo izvršili različite korake u JiBX-u poput generiranja koda ili generiranja veza, moramo konfigurirati maven-jibx-dodatak u pom.xml.
Za slučaj kada trebamo krenuti od Java koda i generirati vezivanje i definiciju sheme, konfigurirajmo dodatak:
org.jibx maven-jibx-plugin ... src / main / resources * -binding.xml template-binding.xml true process-class bind
Kada imamo shemu i generiramo Java kôd i definiciju vezanja, maven-jibx-dodatak je konfiguriran s informacijama o putu datoteke sheme i putu do direktorija izvornog koda:
org.jibx maven-jibx-plug-in ... generiraj-java-kod-iz-sheme schema-codegen src / main / jibx kupac-shema.xsd true compile-binding bind target / generated-sources true true true
4. Obvezujuće definicije
Definicije vezanja temeljni su dio JiBX-a. Osnovna datoteka vezivanja navodi mapiranje između polja XML i Java objekta:
...
4.1. Mapiranje strukture
Mapiranje strukture čini da XML struktura izgleda slično strukturi objekta:
... ... ...
Odgovarajuće klase za ovu strukturu bit će:
kupac javne klase {privatna osoba; ... // standardni getteri i postavljači} javna klasa Osoba {private String lastName; ... // standardni getteri i postavljači}
4.2. Kolekcija i Polje Mapiranja
JiBX povezivanje pruža jednostavan način za rad sa zbirkom predmeta:
... ...
Pogledajmo odgovarajuće mapiranje Java objekata:
javna klasa Order {List addressList = new ArrayList (); ... // ovdje se dobivaju i postavljaju} javna statička klasa Adresa {privatni naziv niza; ... // standardni getteri i postavljači}
4.3. Napredna mapiranja
Do sada smo vidjeli osnovnu definiciju mapiranja. JiBX mapiranje pruža različite okuse mapiranja poput apstraktnog mapiranja i nasljeđivanja mapiranja.
Pogledajmo kako možemo definirati apstraktno mapiranje:
...
Pogledajmo kako se ovo veže za Java objekte:
kupac javne klase {privatna osoba; ... privatni telefon homePhone; privatni telefonski uredPhone; // standardni geteri i postavljači}
Ovdje smo naveli više Telefon polja u Kupac razred. The Telefon sam je opet POJO:
telefon javne klase {broj privatnog niza; // standardni geteri i postavljači}
Uz redovita preslikavanja, možemo definirati i proširenja. Svako mapiranje proširenja odnosi se na neko osnovno mapiranje. U vrijeme marširanja stvarni tip objekta odlučuje koje će se XML mapiranje primijeniti.
Pogledajmo kako funkcioniraju proširenja:
... ... ...
Pogledajmo odgovarajuće Java objekte:
identitet javne klase {private long customerId; // standardni geteri i postavljači}
5. Zaključak
U ovom kratkom članku istražili smo različite načine na koje možemo koristiti JiBX za pretvorbu XML-a u / iz Java objekata. Također smo vidjeli kako možemo koristiti obvezujuće definicije za rad s različitim prikazima.
Cjeloviti kôd za ovaj članak dostupan je na GitHubu.