[Java] XML data importeren in relationele database

Pagina: 1
Acties:
  • 124 views sinds 30-01-2008
  • Reageer

  • NDF82
  • Registratie: Januari 2002
  • Laatst online: 28-11 20:53

NDF82

Doomed Space Marine

Topicstarter
Hi all,

Ik heb de volgende alternatieven bekeken:

Hibernate:
Zegt zelf dat het niet hun core business is en dat de code die meegeleverd wordt verre van stabiel is. Dat blijkt ook uit het gebruik ervan. Wanneer gemapte attributen niet in de input voorkomen gaat het opslaan van de data al fout.

Hyperjaxb:
Combineerd jaxb met hibernate. XML files worden ingelezen en naar Objecten gemapped. Vervolgens worden de Objecten gemapped naar tabellen middels hibernate. Heb ik nog niet geprobeerd en wil ik eigenlijk ook niet, omdat ik de gegenereerde classes nooit zal gebruiken.

Ik zoek het volgende: [xml] --> [framework] --> [Database]
Waarbij het framework het volgende biedt:
  • Mappen van hierarchische xml structuren naar een plat geslagen tabel. Geen musthave omdat ik er eventueel nog wel eeen xslt voor kan zetten die de data plat slaat.
  • Mappen van parent child relaties in XML naar parent child relaties in de db.
Database is een open source variant (op dit moment derby vanwege de embedded eigenschappen, maar dit kan eventueel gewijzigd worden).

Weten jullie nog alternatieven voor het java platform (+ opensource frameworks)?

[ Voor 2% gewijzigd door NDF82 op 09-11-2006 12:42 . Reden: platform vermelden ]

Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II


  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
NDF82 schreef op donderdag 09 november 2006 @ 11:58:
Hibernate:
Zegt zelf dat het niet hun core business is en dat de code die meegeleverd wordt verre van stabiel is. Dat blijkt ook uit het gebruik ervan. Wanneer gemapte attributen niet in de input voorkomen gaat het opslaan van de data al fout.
Kun je dan niet eerst een xslt over je xml heen halen die niet aanwezige attributen als een leeg attribuut toevoegt?

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

MS SQL biedt standaard veel functionaliteit om XML bestanden in te lezen. Zeker 2005 kan hier veel mee. Ik heb geen rechtstreekse ervaring hiermee echter, dus kan je geen hands-on voorbeelden geven.

Via .Net moet het zeker geen probleem zijn. XML inlezen met standaard classes en Dataset persisteren naar je database van keuze.

  • NDF82
  • Registratie: Januari 2002
  • Laatst online: 28-11 20:53

NDF82

Doomed Space Marine

Topicstarter
rrrandy schreef op donderdag 09 november 2006 @ 12:37:
[...]


Kun je dan niet eerst een xslt over je xml heen halen die niet aanwezige attributen als een leeg attribuut toevoegt?
Dat is iets wat ik eigenlijk niet wil vanwege het vele extra onderhoud wat het met zich mee brengt. Daarnaast verwacht ik dat dit nog maar het topje van ijsberg is wat betreft hibernate bugs/issues/...
PhysicsRules schreef op donderdag 09 november 2006 @ 12:37:
MS SQL biedt standaard veel functionaliteit om XML bestanden in te lezen. Zeker 2005 kan hier veel mee. Ik heb geen rechtstreekse ervaring hiermee echter, dus kan je geen hands-on voorbeelden geven.

Via .Net moet het zeker geen probleem zijn. XML inlezen met standaard classes en Dataset persisteren naar je database van keuze.
Sorry, vergeten vermelden dat het om het java platform is (+ open source frame works). MS SQL Server icm .NET is een absolute no-go vanwege de beperkte afzetmarkt van de applicatie.

Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Over welk DBMS gaat het dan wel ?
Is het een éénmalige import, of gaat het hier over een tool die je wil schrijven omdat die import niet éénmalig is ?

https://fgheysels.github.io/


  • NDF82
  • Registratie: Januari 2002
  • Laatst online: 28-11 20:53

NDF82

Doomed Space Marine

Topicstarter
whoami schreef op donderdag 09 november 2006 @ 12:52:
Over welk DBMS gaat het dan wel ?
Is het een éénmalige import, of gaat het hier over een tool die je wil schrijven omdat die import niet éénmalig is ?
Het gaat om Derby, een embedded database van Apache. De import is zeker niet eenmalig.

Via een webservice krijgen we XML data binnen die voldoet aan het CAMX protocol (beschrijft de schema's waaraan de data structuur voldoet). De data die we binnen krijgen moet zo'n 30 dagen opgeslagen worden om aan de gebruiker te presenteren middels een soort dashboard applicatie.

Om de grote hoeveelheid data te kunnen query'en willen we een relationele database gebruiken. Uit praktijk ervaring weten we dat een (JCR) repository erg ongeschikt is voor het uitvoeren van complexe queries.

Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II


  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
NDF82 schreef op donderdag 09 november 2006 @ 12:42:
[...]

Dat is iets wat ik eigenlijk niet wil vanwege het vele extra onderhoud wat het met zich mee brengt. Daarnaast verwacht ik dat dit nog maar het topje van ijsberg is wat betreft hibernate bugs/issues/...
En via de normale persistency van hibernate? Dan geef je je objecten via de constructor een intiële status met default waarden. Vervolgens vul je je objecten met de data uit de xml en kun je ze persisten naar de database.

  • NDF82
  • Registratie: Januari 2002
  • Laatst online: 28-11 20:53

NDF82

Doomed Space Marine

Topicstarter
rrrandy schreef op donderdag 09 november 2006 @ 13:54:
[...]


En via de normale persistency van hibernate? Dan geef je je objecten via de constructor een intiële status met default waarden. Vervolgens vul je je objecten met de data uit de xml en kun je ze persisten naar de database.
Dat is exact wat hyperjaxb biedt. Echter... dan wordt m'n importeer laag wel erg "dik". Ik heb dan 2 mappings (jaxb mappings en hibernate mappings = dubbel onderhoud && dubbel test). Daarnaast vind ik het zonde om allemaal code te genereren zonder er verder ook maar iets mee te doen bijvoorbeeld business code toevoegen. Het bestaansrecht van de gegenereerde classes zou alleen hyperjaxb zijn.

Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II


  • den 150
  • Registratie: Oktober 2002
  • Niet online
Vroeger veel gewerkt met XQuare. Ondertussen al een paar jaar oud, en zo goed als geen activiteit meer op de mailing lists. Voor zover ik weet geen support voor Derby. Misschien kan je redelijk eenvoudig die support zelf toevoegen.

Als 't altijd dezelfde xml is zou ik opteren voor een custom geschreven oplossing...

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 08:22
Is het misschien een optie om de XML gegevens via Apache XMLBeans te mappen naar eenvoudige JavaBeans en die vervolgens via Hibernate in een database te gooien? Of is dat te omslachtig / niet mogelijk?

Edit: Hmmm, die optie had je zelf al min of meer afgeschreven.

[ Voor 31% gewijzigd door Kwistnix op 09-11-2006 23:46 ]


  • NDF82
  • Registratie: Januari 2002
  • Laatst online: 28-11 20:53

NDF82

Doomed Space Marine

Topicstarter
den 150 schreef op donderdag 09 november 2006 @ 19:31:
Vroeger veel gewerkt met XQuare. Ondertussen al een paar jaar oud, en zo goed als geen activiteit meer op de mailing lists. Voor zover ik weet geen support voor Derby. Misschien kan je redelijk eenvoudig die support zelf toevoegen.

Als 't altijd dezelfde xml is zou ik opteren voor een custom geschreven oplossing...
Ik heb XQuare snel geprobeerd met mysql 5.x. Dit werkte helaas niet. Op de site staat vermeld dat ze getest hebben met mysql 3.x dus waarschijnlijk zal die combinatie wel werken.

Totdat ik iets beters heb gevonden zal ik een berg xslts icm met hibernate gebruiken :S.

Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II


  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 11:18
Als je database mag wijzigen zou ik er een kiezen van het type native xml. Exist is een voorbeeld, heb hier geen ervaring mee. Ik gebuik zelf jaxb omdat ik de gegenereerde objecten uiteindelijk wel via een business laag de database in stuur. De database mappings zijn bij mijn project ook niet 1 op 1 te mappen aan de xsd schema's vanwaar de data objecten gegenereerd worden.
Pagina: 1