Castor (rámec) - Castor (framework)
Stabilní uvolnění | 1.4.1 / 15. května 2016 |
---|---|
Napsáno | Jáva |
Operační systém | Cross-platform (JVM ) |
Plošina | Virtuální stroj Java |
Typ | Vazba dat |
Licence | Apache 2.0 |
webová stránka | castor-data-binding |
Castor je datová vazba rámec pro Jáva s některými funkcemi, jako je vazba Java na Java-to-XML, persistence Java-to-SQL, cesty mezi objekty Java, XML dokumenty, relační tabulky atd.[1][2][3] Castor je jedním z nejstarších projektů vázání dat.[3]
Průběh procesu
Mezi základní procesy patří generování tříd, seřaďování, unshalling atd.[2] Marshalling framework obsahuje sadu ClassDescriptors a FieldDescription k popisu objektů.[3]
Generace třídy
Generování tříd je podobné JAXB a Zeus. Castor podporuje XML schéma namísto DTD (DTD nejsou podporovány Castorem).[2][3][4]
Oddělování a seřaďování
Unmarshalling a marshalling jsou řešeny metodami marshall () a unmarshall (). Během zařazování se provádí proces převodu z Javy na XML a během zrušení se provádí proces převodu z XML na Javu. Soubory mapování jsou ekvivalentem schématu vazby, které umožňuje transformovat názvy z XML do Javy a naopak.[2]
Další funkce
Castor nabízí některé další funkce, které v JAXB nejsou. Mezi další funkce patří:
- Mapování databází a adresářových serverů - mapování mezi databázemi a adresářovými servery na prostředí Java
- JDO - Caster podporuje Datové objekty Java.[2]
Ukázky kódu
Kód pro zařazování může vypadat takto:
balík javajaxb;import java.io.soubor;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;// Kolečkoimport org.exolab.castor.xml.MarshalException;import org.exolab.castor.xml.ValidationException;// Generované třídy hr.xmlimport javajaxb.generated.hr. *;veřejnost třída ZaměstnanecLister { // Stávající metody veřejnost prázdnota upravit() hodí IOException, MarshalException, ValidationException { // Přidat nového zaměstnance Zaměstnanec zaměstnanec = Nový Zaměstnanec(); zaměstnanec.setName(„Ben Rochester“); Adresa adresa = Nový Adresa(); adresa.setStreet1(„708 Teakwood Drive“); adresa.setCity("Květinový kopec"); adresa.setState(„TX“); adresa.setZipCode("75028"); zaměstnanec.přidat adresu(adresa); Organizace organizace = Nový Organizace(); organizace.setId(43); organizace.setName("Technické služby"); zaměstnanec.setOrganizace(organizace); Kancelář kancelář = Nový Kancelář(); kancelář.setId(241); Adresa adresa kanceláře = Nový Adresa(); adresa kanceláře.setStreet1(„Obchodní náměstí 1202“); adresa kanceláře.setStreet2(„Suite 302“); adresa kanceláře.setCity("Dallas"); adresa kanceláře.setState(„TX“); adresa kanceláře.setZipCode("75218-8921"); kancelář.setAddress(adresa kanceláře); zaměstnanec.setOffice(kancelář); // Přidat zaměstnance do seznamu zaměstnanci.addEmployee(zaměstnanec); // maršál zaměstnanci.maršál(Nový FileWriter(výstupní soubor)); } veřejnost statický prázdnota hlavní(Tětiva[] args) { Snaž se { -li (args.délka != 2) { Systém.ven.tisk("Použití: java javajaxb.EmployeeLister" + „[web.xml název souboru] [output.xml název souboru]“); vrátit se; } ZaměstnanecLister Listere = Nový ZaměstnanecLister(Nový Soubor(args[0]), NovýSoubor(args[1])); Listere.seznam(skutečný); Listere.upravit(); } chytit (Výjimka E) { E.printStackTrace(); } } }
Kód pro zrušení sdílení může vypadat takto:
balík javajaxb;import java.io.soubor;import java.io.FileReader;import java.io.IOException;// Kolečkoimport org.exolab.castor.xml.MarshalException;import org.exolab.castor.xml.ValidationException;// Generované třídy hr.xmlimport javajaxb.generated.hr. *;veřejnost třída ZaměstnanecLister { / ** Deskriptor ke čtení * / soukromé Soubor deskriptor; / ** Výstupní soubor pro zápis do * /150 soukromé Soubor výstupní soubor; / ** Načtený strom objektů * / soukromé Zaměstnanci zaměstnanci; veřejnost ZaměstnanecLister(Soubor deskriptor, Soubor výstupní soubor) { zaměstnanci = nula; tento.deskriptor = deskriptor; tento.výstupní soubor = výstupní soubor; } veřejnost prázdnota seznam(booleovský ověřit) hodí IOException, MarshalException, ValidationException { // Unmarshall zaměstnanci = Zaměstnanci.maršál(Nový FileReader(deskriptor)); // Proveďte základní tisk Systém.ven.tisk("--- Seznam zaměstnanců --- n"); Zaměstnanec[] seznam zaměstnanců = zaměstnanci.getEmployee(); pro (int i=0; i<seznam zaměstnanců.délka; i++) { Zaměstnanec zaměstnanec = seznam zaměstnanců[i]; Systém.ven.tisk(„Zaměstnanec:“ + zaměstnanec.getName()); Systém.ven.tisk(„Organizace:“ + zaměstnanec.getOrganization().getName()); Systém.ven.tisk(„Kancelář:“ + zaměstnanec.getOffice().getAddress().getCity() + ", " + zaměstnanec.getOffice().getAddress().getState() + „ n“); } } veřejnost statický prázdnota hlavní(Tětiva[] args) { Snaž se { -li (args.délka != 2) { Systém.ven.tisk("Použití: java javajaxb.EmployeeLister" + „[web.xml název souboru] [output.xml název souboru]“); vrátit se; } ZaměstnanecLister Listere = Nový ZaměstnanecLister(Nový Soubor(args[0]), NovýSoubor(args[1])); Listere.seznam(skutečný); } chytit (Výjimka E) { E.printStackTrace(); } } }
Ukázkový soubor mapování může vypadat takto:
<?xml version="1.0"?><!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Object Mapping DTD Version 1.0//EN" "http://Castor.exolab.org/mapping.dtd"><mapping> jméno =„javajaxb.generated.hr.Employees“> xml ="emp-list"/> jméno ="Zaměstnanec" zadejte =„javajaxb.generated.hr.Employee“> jméno =„emp“ /> </field> </class> jméno =„javajaxb.generated.hr.Employee“> jméno =„ID“ zadejte ="celé číslo"> jméno =„emp-id“ uzel ="atribut"/> </field> jméno ="název" zadejte =„java.lang.String“> jméno ="emp-name" uzel ="atribut"/> </field> jméno ="Adresa" zadejte =„javajaxb.generated.hr.Address“> jméno =„emp-address“ /> </field> jméno ="Organizace" zadejte =„javajaxb.generated.hr.Organization“> jméno =„emp-org“/> </field> jméno ="Kancelář" zadejte =„javajaxb.generated.hr.Office“> jméno ="emp-office"/> </field> </class> jméno =„javajaxb.generated.hr.Address“> jméno =„Street1“ zadejte =„java.lang.String“> jméno =„řádek 1“ uzel ="živel"/> </field> jméno ="Ulice č. 2" zadejte =„java.lang.String“> jméno =„řádek 2“ uzel ="živel"/> </field> jméno ="Město" zadejte =„java.lang.String“> jméno ="město" uzel ="živel"/> </field> jméno ="Stát" zadejte =„java.lang.String“> jméno ="Stát" uzel ="živel"/> </field> jméno ="PSČ" zadejte =„java.lang.String“> jméno ="PSČ" uzel ="živel"/> </field> </class> jméno =„javajaxb.generated.hr.Office“> jméno =„ID“ zadejte ="celé číslo"> jméno =„office-id“ uzel ="atribut"/> </field> jméno ="Adresa" zadejte =„javajaxb.generated.hr.Address“> jméno ="adresa kanceláře" uzel ="živel"/> </field> </class> jméno =„javajaxb.generated.hr.Organization“> jméno =„ID“ zadejte ="celé číslo"> jméno =„org-id“ uzel ="živel"/> </field> jméno ="Název" zadejte =„java.lang.String“> jméno =„org-name“ uzel ="živel"/> </field> </class></mapping>
Viz také
- Datová vazba XML
- Seznam softwaru pro objektově-relační mapování
- Serializace
- Servisní datový objekt
- Vazba dat
Reference
- ^ "O". Castor. Github. Citováno 11. února 2016.
- ^ A b C d E F G h McLaughin, B (2002). Vazba dat Java a XML. Sebastopol: O'Reilly & Associates, Inc. str. 143–165.
- ^ A b C d Příručka pro vývojáře XML. Scotts Valley, USA: Borland Software Corporation. 2002. s. (2–29) - (2–31).
- ^ „Generátor zdrojového kódu“. Castor. Github. Citováno 11. února 2016.