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.