Par dotazu:
1/ udrzuji si objekty informace o zmenach jednotlivych atributu a jsou do DB posilany pro UPDATE jen atributy u kterych doslo ke zmene nebo je vzdy prepsan cely objekt ulozeny v DB?
2/ lze provadet UPDATE jen na zaklade znalosti PK bez nutnosti cely objekt nejdrive vyzvednout z DB pak zmenit a nasledne ulozit?
3/ Nejake odkazy o dalsich implementacich (C/C++, Perl, Python)?
A jde v OQL udelat neco jako
UPDATE emploees SET salary=1.1*salary WHERE job='programer' ?
nebo si nejdriv musim vyzadat vsechny odpovidajici objekty (nebo aspon jejich PK, viz predchozi dotaz) a pak je aktualizovat po jednom?
Nekdy je to prakticke, na druhou stranu je to proti objektovemu pristupu (modifikujeme data "bez vedomi" prislusnych objektu)
Jeste mne napadla otazka, jeden sam o sobe jsouci objekt naplnit, udrzovat a pripadne ulozit do DB neni nic svetaborneho. Jak je to v pripade, ze objekt obsahuje (ukazuje) na dalsi objekty. Napriklad objekt "rodina" slozeny z objektu tata, mama a deti. Lze neco takoveho definovat jako celek a jako z celkem zachazet? Napriklad pridat dite, zmenit vahu u objektu "mama" a cele to pak commitnout? Pochopitelne v DB by to melo byt ulozeno tak, aby to vyhovovalo zakladnim relacnim pouckam. Dik.
Prave ty odkazy jsou na tom nejhezci - pouzijete treba OQL dotaz na ziskani jednoho objektu a pak uz pouzivate standardni odkazy a ostatni objekty se automaticky "dotahuji" z DB.
Stejne tak nemusite explicitne rikat co bude ulozeno v DB (funguje to trosku jak GC collector) -> dokud existuje alespon jeden odkaz na objekt, tak ten objekt bude v databazi, jakmile ten odkaz zrusite, odkaz bude smazan. Pro pridani do DB zase staci vytvorit objekt a udelat na nej link z objektu, ktery uz je v DB ulozen.
Je fakt, ze mam zkusenosti s jinou ODMG (http://www.poet.com/en/) databazi, ale tohle by melo byt snandardni chovani.
chtel bych upozornit na perlovsky modul Class::DBI, ktery dela SQL abstrakci - vy odvodite svou tridu od Class::DBI a reknete, ve ktere tabulce jsou objekty teto tridy a jake sloupecky ta tabulka ma, a na oplatku zdedite funkce jako create_new, delete, retrieve_all, search a rovnez pristupove metody pro vsechny atributy zaznamu.
modul rovnez zvlada cizi klice, pri pristupu k atributu ktery nekam ukazuje je z DB nacten cilovy objekt, umi triggery - perl funkce ktere budou spusteny pri urcite modifikaci objektu, dale umi 'client-side' transakce - zmeny si drzi v pameti, a az kdyz commitnete tak zmeny zapise do DB a spustu dalsiho..
V sucasnosti pouzivam na prepojenie DB-Java projekt Castor. Castor umoznuje aj prevod Java-XML. Cele mapovanie (DB-Java-XML) sa da nakonfigurovat v jedinom XML-subore. Zaujimalo by ma, ci aj Jakarta OJB poskytuje moznost prevodu Java-XML, pripadne rovno DB-XML. Dakujem.