ktera bere v potaz detekci jiz generovanych objektu a u nich uz se nepousti do vypisu atributu. Zaroven umi poznat, ze se jedna o neinicializovany objekt od Hibernate (proxy nebo kolekce) a ty se take nesnazi vypsat. Tu jsme nakonec pomoci AspectJ dotlacili vsem potrebnym objektum.
Je otazka, zda neinicializovany objekt vypsat ci nikoli. Ja bych je totiz
naopak videl rad. Odladuji plneni databaze o vic nez 30 tabulkach, jejichz
vazby tvori uplny neplanarni graf (rozklad na BCNF mi vygeneroval 78
tabulek a do toho se mi vazne nechce...)
No my jsem je vypsali a rekli jsme u nich, ze jsou neinicializovane, protoze kazdopadne nechci, aby mi toString jako side effect tahalo neco z db ...

Coz ja prave potrebuju, abych mel prehled, co se mi to vlastne v DB udelalo.
Neni to zadna p...., to mi muzete verit.

Pak bych to nedelal metodou toString, ktera se vola vsude mozne, ale udelal bych si na to vlastni metodu, protoze bude dotahovat veci z DB a tudiz musi byt aktivni sessiona ...

V podstate jsme malinko vylepsili implemtaci z commons-lang, ktera je zbytecne komplikovana a jenom detekuje cykly, kdezto my jsme chteli, aby se objekt nezapisoval podruhe i mimo cyklus ...
No i tady je otazka, zda a kdy objekt vypsat dvakrat. Podle mne jsou situace,
kdy jej v ramoci jednoho toString() vypsat chcete komplet
a kdy chcete jen jeho IDcko... - takze urcite je potreba, aby se vypisoval
alespon dvema zpusoby.
No my jsme si do ThreadLocal ulozil collection, kde se drzi seznam jiz zapsanych objektu. Pokud v ramci jednoho volani toString objekt zapisuji poprve, pak jej zapisu cely vcetne jeho podgrafu, pokud jej zapisuju podruhy, pak zapisu jeho systemovy hash a podle nej si jej muzu dohledat ve vypise nekde driv ...
Ano, je to jedna moznost. Uz jsem o ni uvazoval, co mi to prinese. Problem
je v tom, ze mi to ukazalo na nutnost drzet si cely graf vypsanych objektu
v pameti, protoze jsou chvile, kdy potrebuju mit TRI ruzne zobrazeni(hash
neni to prave orechove),

Spatne jsem se vyjadril, protoze jsem mel na mysli System.identityHashCode. Pokud je to nutne pouze pro ladeni, pak je otazka, zda si neudelat nejake specializovane udelatko, kteremu se preda korenovy objekt a on pomoci reflection API projde cely strom a inteligentne s odsazovanim jej v citelne forme vypise :-)

a to se mi FAKT nechtelo. Ale stejne budu muset neco obdobneho zavest, protoze
potrebuju vypsat k jednomu radku tabulky A radky tabulky D, ke kterym
se dostanu pres tabulky B a C, procemz tabulka B je pouha vazba 1:(0,1) a mohl
bych se tak velice rychle dostat do stavu, kdy budu vypisovat 
A->B->(A->B->(A,C),C). Fuj.

A nebo budu vypisovat ty Hashe a napisu si vlastni graficky Renderer :-D
Hmm. To uz muzu zrovna z DB generovat triplety pro nas RDFNavigator, co?

tapik

Takze zustanu u sveho systemu a jdu si hrat s toString() pluginem do Idei...
Jak se rika, kazdy sveho stesti strujcem. Me se hodne pozdava to napichnuti do objektu pomoci aspektu, protoze mam definici toString na jednom miste :-)

Zdravim,
chtel bych se zeptat, co pouzivate na logovani Hibernate Entit.
Pokud chci zalogovat jenom literaly, neni co resit.
Problem nastava ve chvili, kdy chci logovat objekt vcetne vazeb.
Pak se velice rychle dostanu pri implementaci pouheho toString() do zacykleni.
Momentalne pouzivam tri urovne:
* toString(), ktery generuje vystup jak z literalu, tak s vazeb.
 Vazby prohani metodou flatToStringA()
* flatToString() generuje syntakticky stejny vystup jako toString()
a to z literalu a vazeb, ktere jsou N:1 a 1:1. Vazby prohani beanToString()
* beanToString() generuje syntakticky stejny vystup jako toString()
 a to pouze z literalu

Tim mam zarucene necykleni vystupu a rozumne maly graf.

Moje otazka zni: existuje nejaky pekny nastroj, ktery umi logovat podobne
inteligentne, nebo si mam napsat plugin do IntelliJ/perlovy skript, ktery mi bude sam generovat tyto tri metody? Teda devet, protoze mame i kolekce, ze, a protoze ve staticke metode mohu udelat test na null logovaneho objektu, ze.

Je mi jasne, ze by to slo resit i pres Reflection, ale tak nejak nemam
Reflection moc v lasce a hlavne nevidim presne do Hibernate, abych se tam
nedostal do nejakych velkych problemu, takze se mi do toho tak nejak nechce...

Dik, tapik
--
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic
--
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic

--
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic

Odpovedet emailem