Re: Eclipse RCP client + Spring backend

2010-03-11 Tema obsahu Lukáš Záruba

K SWT bych ještě dodal tento link, velmi dobrý pomocník...
http://www.eclipse.org/swt/widgets/
A ještě jednou zdůrazním nápověda, která je v eclipse IDE obsahuje 
kompletní dokumentaci i k platformě (ext. points, contributions, etc) a 
k swt i jface (moc milá věc, nejenom MVC, ale hlavně rychle vyrobené 
open/save dialogy, prompty atd)


__

Lukáš Záruba (Lukas Zaruba)
Chief Technical Officer
MEDIA SOLUTIONS EUROPE
Lisabonská 4
Praha 9 190 00
Czech Republic
phone: +420 721 879 363



Rastislav Rehak napsal(a):

Ahoj

raz sme robili jednu velku vec na Eclipse RCP so Springovym zadkom. 
Komunikacia bola cez Spring RPC. Perzistencia Hibernate.
Rozhodne je to schodna cesta. Velky doraz bol kladeny na 
vykon.Bohuzial publikovat to moc nemozeme.


V podstate vzdy ked sa zacinal Eclipse RCP projekt tak si ludia 
precitali tutorial od Eclipsu a existoval jeden clovek co to uz vedel 
a mohol ich zaskolit.


Dalsia vec na ktoru si treba davat pozor je skutocne komplexnost 
Eclipsu. Su tam vlastne tri oblastni ktore musite zvladnut:

- SWT , uplne iny toolkit oproti swingu, vyhoda je ak poznate win32 API .
- Eclipse RCP - pluginy, extension pointy atd
- JFaces - high level komponenty nieco ako MVC framework

Pokial sa dobre pamatam, tak na Eclipsovych strankach su aj priklady.

R


David Mach wrote:

Zdravím,

najde se v českých luzích a hájích někdo s praktickými zkušenostmi s 
vývojem klientské aplikace na bázi Eclipse RCP? Ideálně připojené na 
serverový backend postavený na Springu... Rád bych pár věcí před 
startem projektu konzultoval, ale budu vděčný i za každý odkaz na 
tutoriál nebo (open source) projekt.


Díky předem!

David Mach



Re: Eclipse RCP client + Spring backend

2010-03-11 Tema obsahu Tomas Vitek
Zdravím,

uvednou kombinaci jsme v bývalé firmě používali. Backend byl v Spring a
Hibernate, klient v Eclipse RCP spolu se Springem. Pro komunikaci jsme
používali Spring http invoker. Spring jsme na klientovi používali i pro
dependency injection a konfiguraci jednotlivých view, commandu atd.

Je to schůdná cesta, ale jak už tady někdo psal Eclipse RCP je velký
framework a je dobré ho dopředu dobře nastudovat.

Hodně štěstí,
tomáš

2010/3/10 David Mach m...@alis.cz

 Zdravím,

 najde se v českých luzích a hájích někdo s praktickými zkušenostmi s
 vývojem klientské aplikace na bázi Eclipse RCP? Ideálně připojené na
 serverový backend postavený na Springu... Rád bych pár věcí před startem
 projektu konzultoval, ale budu vděčný i za každý odkaz na tutoriál nebo
 (open source) projekt.

 Díky předem!

 David Mach



hibernate a instanceOf

2010-03-11 Tema obsahu Ivan Polak
Zdravim konferenciu,

mam v hibernate nasledovne objekty:

objekt Customer :

@Entity
@Table(name=customer)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = customer_type,
discriminatorType=DiscriminatorType.STRING)
public abstract class Customer extends BaseObject {

}

a od neho odvodeny objekt Shipper:

@Entity
@DiscriminatorValue(S)
public class Shipper extends Customer {
...}

potrebujem pouzit nasledovny test:

returnValue = Class.forName(className).isInstance(o);

kde className je premenna typu String s hodnotou com.project.Shipper
a Objekt o je cez Hibernate vytiahnuty objekt z DB, zobraznene vo
watch okne: Customer_$$_javassist_145 (...).

preco je returnValue FALSE, ked by podla mna malo byt TRUE ?

dakujem

Ivan


RE: hibernate a instanceOf

2010-03-11 Tema obsahu Tomas Hubalek
Nechtel jsi spis pouzit Class.isAssignableFrom? Hibernate Ti primo v
dokumentaci nezarucuje, ze kdyz mu das nejakou tridu, tak primo ji
dostanes. Hodne casto dostanes nejakeho jejich potomka.

 -Original Message-
 From: konference-boun...@java.cz 
 [mailto:konference-boun...@java.cz] On Behalf Of Ivan Polak
 Sent: Thursday, March 11, 2010 12:47 PM
 To: Java
 Subject: hibernate a instanceOf
 
 Zdravim konferenciu,
 
 mam v hibernate nasledovne objekty:
 
 objekt Customer :
 
 @Entity
 @Table(name=customer)
 @Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
 @DiscriminatorColumn(name = customer_type,
 discriminatorType=DiscriminatorType.STRING)
 public abstract class Customer extends BaseObject { 
 }
 
 a od neho odvodeny objekt Shipper:
 
 @Entity
 @DiscriminatorValue(S)
 public class Shipper extends Customer {
 ...}
 
 potrebujem pouzit nasledovny test:
 
 returnValue = Class.forName(className).isInstance(o);
 
 kde className je premenna typu String s hodnotou com.project.Shipper
 a Objekt o je cez Hibernate vytiahnuty objekt z DB, 
 zobraznene vo watch okne: Customer_$$_javassist_145 (...).
 
 preco je returnValue FALSE, ked by podla mna malo byt TRUE ?
 
 dakujem
 
 Ivan
 


Re: hibernate a instanceOf

2010-03-11 Tema obsahu Kamil Podlesak
Ne často, vždy :-)
Je to základní princip fungování Hibernate.

Kamil Podlešák

2010/3/11 Tomas Hubalek tomas.huba...@onsemi.com:
 Nechtel jsi spis pouzit Class.isAssignableFrom? Hibernate Ti primo v
 dokumentaci nezarucuje, ze kdyz mu das nejakou tridu, tak primo ji
 dostanes. Hodne casto dostanes nejakeho jejich potomka.

 -Original Message-
 From: konference-boun...@java.cz
 [mailto:konference-boun...@java.cz] On Behalf Of Ivan Polak
 Sent: Thursday, March 11, 2010 12:47 PM
 To: Java
 Subject: hibernate a instanceOf

 Zdravim konferenciu,

 mam v hibernate nasledovne objekty:

 objekt Customer :

 @Entity
 @Table(name=customer)
 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
 @DiscriminatorColumn(name = customer_type,
 discriminatorType=DiscriminatorType.STRING)
 public abstract class Customer extends BaseObject { 
 }

 a od neho odvodeny objekt Shipper:

 @Entity
 @DiscriminatorValue(S)
 public class Shipper extends Customer {
 ...}

 potrebujem pouzit nasledovny test:

 returnValue = Class.forName(className).isInstance(o);

 kde className je premenna typu String s hodnotou com.project.Shipper
 a Objekt o je cez Hibernate vytiahnuty objekt z DB,
 zobraznene vo watch okne: Customer_$$_javassist_145 (...).

 preco je returnValue FALSE, ked by podla mna malo byt TRUE ?

 dakujem

 Ivan




Re: hibernate a instanceOf

2010-03-11 Tema obsahu Roman Pichlík
 Ne často, vždy :-)
 Je to základní princip fungování Hibernate.

to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to potreba
napr. lazy loading.

-- 
S pozdravem Roman Dagi Pichlik

/* http://www.sweb.cz/pichlik/ Blog pro kodery */


Re: hibernate a instanceOf

2010-03-11 Tema obsahu Ivan Polak
ano, lazy loading je v aplikacii zapnuty.

Ivan

2010/3/11 Roman Pichlík roman.pich...@gmail.com:
 Ne často, vždy :-)
 Je to základní princip fungování Hibernate.

 to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to potreba
 napr. lazy loading.

 --
 S pozdravem Roman Dagi Pichlik

 /* http://www.sweb.cz/pichlik/ Blog pro kodery */



Re: hibernate a instanceOf

2010-03-11 Tema obsahu Kamil Podlesak
Pokud si dobře pamatuji, tak tímto způsobem i sleduje, zda a kdy (a
jak) se změnily hodnoty, aby je pak uložil.

Každopádně, ještě bych dodal: původní tazatel udělal chybu v tom, že
za dynamickou obdobu operátoru instanceof považoval Class.isInstance,
což je špatně (správně je Class.isAssignableFrom).

Kamil Podlešák

2010/3/11 Roman Pichlík roman.pich...@gmail.com:
 Ne často, vždy :-)
 Je to základní princip fungování Hibernate.

 to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to potreba
 napr. lazy loading.

 --
 S pozdravem Roman Dagi Pichlik

 /* http://www.sweb.cz/pichlik/ Blog pro kodery */



Re: hibernate a instanceOf

2010-03-11 Tema obsahu Ivan Polak
podla rady som uvedeny riadok :

returnValue = Class.forName(className).isInstance(o);

zmenil na:

returnValue = o.getClass().isAssignableFrom(Class.forName(className));

ako som uviedol className je premenna typu String s hodnotou
com.project.Shipper
a Objekt o je cez Hibernate vytiahnuty objekt z DB, zobraznene vo
watch okne: Customer_$$_javassist_145 (...).


dakujem

Ivan

2010/3/11 Kamil Podlesak kamil.podle...@gmail.com:
 Pokud si dobře pamatuji, tak tímto způsobem i sleduje, zda a kdy (a
 jak) se změnily hodnoty, aby je pak uložil.

 Každopádně, ještě bych dodal: původní tazatel udělal chybu v tom, že
 za dynamickou obdobu operátoru instanceof považoval Class.isInstance,
 což je špatně (správně je Class.isAssignableFrom).

 Kamil Podlešák

 2010/3/11 Roman Pichlík roman.pich...@gmail.com:
 Ne často, vždy :-)
 Je to základní princip fungování Hibernate.

 to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to potreba
 napr. lazy loading.

 --
 S pozdravem Roman Dagi Pichlik

 /* http://www.sweb.cz/pichlik/ Blog pro kodery */




Re: hibernate a instanceOf

2010-03-11 Tema obsahu Roman Pichlík
 Pokud si dobře pamatuji, tak tímto způsobem i sleduje, zda a kdy (a
 jak) se změnily hodnoty, aby je pak uložil.

ne nesleduje. Session si drzi vlastni snapshot proti kteremu se dela
diff. Jeste jedna z metod na Session vraci proxy a to je load. Diky
tomu je mozne udelat perf. optimalizaci napriklad pri mazani.

-- 
S pozdravem Roman Dagi Pichlik

/* http://www.sweb.cz/pichlik/ Blog pro kodery */


Re: hibernate a instanceOf

2010-03-11 Tema obsahu Ivan Polak
a zabudol som napisat ze to nepomohlo :-(

Ivan

2010/3/11 Ivan Polak ivan.po...@f4s.sk:
 podla rady som uvedeny riadok :

 returnValue = Class.forName(className).isInstance(o);

 zmenil na:

 returnValue = o.getClass().isAssignableFrom(Class.forName(className));

 ako som uviedol className je premenna typu String s hodnotou
 com.project.Shipper
 a Objekt o je cez Hibernate vytiahnuty objekt z DB, zobraznene vo
 watch okne: Customer_$$_javassist_145 (...).


 dakujem

 Ivan

 2010/3/11 Kamil Podlesak kamil.podle...@gmail.com:
 Pokud si dobře pamatuji, tak tímto způsobem i sleduje, zda a kdy (a
 jak) se změnily hodnoty, aby je pak uložil.

 Každopádně, ještě bych dodal: původní tazatel udělal chybu v tom, že
 za dynamickou obdobu operátoru instanceof považoval Class.isInstance,
 což je špatně (správně je Class.isAssignableFrom).

 Kamil Podlešák

 2010/3/11 Roman Pichlík roman.pich...@gmail.com:
 Ne často, vždy :-)
 Je to základní princip fungování Hibernate.

 to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to potreba
 napr. lazy loading.

 --
 S pozdravem Roman Dagi Pichlik

 /* http://www.sweb.cz/pichlik/ Blog pro kodery */





Re: Obdoba PreparedStatement.setMaxRows() na straně databáze

2010-03-11 Tema obsahu Lukas Barton
Hibernate to dela - metoda *setMaxResults*
Ale nemusi to chodit na vsech DB, zalezi na konkretnim dialektu - jeste
nedavno to neumel pro MS SQL v kombinaci s *setFirstResult*.

Z tech dialektu se da vykoukat konkretni SQL implementace pro dane databaze.

  Lukas

2010/3/11 Oto Buchta ta...@buchtovi.cz

 Zdravím,
 mám tabulku o milionech záznamů, kde primárním klíčem je long, ale
 nejedná se o seqenci.
 Dívám se po generickém nástroji, který by mi vrátil pouze N záznamů s
 nejvyšším indexem menším než nějaké X,
 tedy umí něco, co by se mělo v JDBC řešit takto:
 Connection.prepareStatement(select * from tabulka where klicX order
 by klic desc).setMaxRows(N);

 Jenomže toto je na řešeno na straně JDBC driveru, nikoli na straně
 databáze. Když to chci udělat databázovým strojem,
 musím to řešit pro každou DB zvlášť:
 Oracle: select * from tabulka where klicX and rownum=N order by klic desc
 MySQL: select * from tabulka where klicX order by klic desc limit 1,N

 Znáte takový generický nástroj, popřípadě dokážete poradit, jak
 nastavit Hibernate či iBatis či cokoli jiného, aby mi tuto službu
 poskytlo?
 Já ne a kamarád Gůgl taky nenapověděl.

 Dík moc,
 --
 Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com



Re: hibernate a instanceOf

2010-03-11 Tema obsahu Vaclav Stumbauer
Nemuzete to prevest na rozhodnovani dle hodnoty discriminatoru?
Ten si muzete namapovat jako vlastnost Custommera (update=false, insert=false)
a nasledne provadet testy podle hodnoty teto vlastnosti.
Pouzivat instanceofy a spol., navic v prostredi prolezlem
proxynama, zejmena na dedicne strukture neni nejlepsi.

VS


2010/3/11 Ivan Polak ivan.po...@f4s.sk:
 a zabudol som napisat ze to nepomohlo :-(

 Ivan

 2010/3/11 Ivan Polak ivan.po...@f4s.sk:
 podla rady som uvedeny riadok :

 returnValue = Class.forName(className).isInstance(o);

 zmenil na:

 returnValue = o.getClass().isAssignableFrom(Class.forName(className));

 ako som uviedol className je premenna typu String s hodnotou
 com.project.Shipper
 a Objekt o je cez Hibernate vytiahnuty objekt z DB, zobraznene vo
 watch okne: Customer_$$_javassist_145 (...).


 dakujem

 Ivan

 2010/3/11 Kamil Podlesak kamil.podle...@gmail.com:
 Pokud si dobře pamatuji, tak tímto způsobem i sleduje, zda a kdy (a
 jak) se změnily hodnoty, aby je pak uložil.

 Každopádně, ještě bych dodal: původní tazatel udělal chybu v tom, že
 za dynamickou obdobu operátoru instanceof považoval Class.isInstance,
 což je špatně (správně je Class.isAssignableFrom).

 Kamil Podlešák

 2010/3/11 Roman Pichlík roman.pich...@gmail.com:
 Ne často, vždy :-)
 Je to základní princip fungování Hibernate.

 to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to potreba
 napr. lazy loading.

 --
 S pozdravem Roman Dagi Pichlik

 /* http://www.sweb.cz/pichlik/ Blog pro kodery */






Re: Obdoba PreparedStatement.setMaxRows() na straně databáze

2010-03-11 Tema obsahu jmanousek
Zdar,

v Hibernate pomocí criterií


Criteria criteria;
..
criteria.setMaxResults(100);
criteria.setFirstResult(0);

Provoz nad Oracle ok.

Jara






Oto Buchta ta...@buchtovi.cz
Odeslal: konference-boun...@java.cz
11.03.2010 13:25
Odpovězte prosím uživateli Java
 
Komu:   Java konference@java.cz
Kopie: 
Předmět:Obdoba PreparedStatement.setMaxRows() na straně 
databáze

Zdravím,
mám tabulku o milionech záznamů, kde primárním klíčem je long, ale
nejedná se o seqenci.
Dívám se po generickém nástroji, který by mi vrátil pouze N záznamů s
nejvyšším indexem menším než nějaké X,
tedy umí něco, co by se mělo v JDBC řešit takto:
Connection.prepareStatement(select * from tabulka where klicX order
by klic desc).setMaxRows(N);

Jenomže toto je na řešeno na straně JDBC driveru, nikoli na straně
databáze. Když to chci udělat databázovým strojem,
musím to řešit pro každou DB zvlášť:
Oracle: select * from tabulka where klicX and rownum=N order by klic desc
MySQL: select * from tabulka where klicX order by klic desc limit 1,N

Znáte takový generický nástroj, popřípadě dokážete poradit, jak
nastavit Hibernate či iBatis či cokoli jiného, aby mi tuto službu
poskytlo?
Já ne a kamarád Gůgl taky nenapověděl.

Dík moc,
-- 
Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com



Re: hibernate a instanceOf

2010-03-11 Tema obsahu Lukas Barton
Pro kolekce to pomoci tech proxy sleduje - a lze se dostat do zajimavych
problemu, kdyz mu tu proxy na kolekci prepiseme.

Proxy tam nebudou, pokud to zakazeme, nebo pokud se jedna o instance
nenactene pomoci Hibernatu - at uz asociovane k session dodatecne, nebo
takove, ktere dosud nejsou perzistentni.

  Lukas

2010/3/11 Roman Pichlík roman.pich...@gmail.com

  Pokud si dobře pamatuji, tak tímto způsobem i sleduje, zda a kdy (a
  jak) se změnily hodnoty, aby je pak uložil.

 ne nesleduje. Session si drzi vlastni snapshot proti kteremu se dela
 diff. Jeste jedna z metod na Session vraci proxy a to je load. Diky
 tomu je mozne udelat perf. optimalizaci napriklad pri mazani.

 --
 S pozdravem Roman Dagi Pichlik

 /* http://www.sweb.cz/pichlik/ Blog pro kodery */



Re: Obdoba PreparedStatement.setMaxRows( ) na straně databáze

2010-03-11 Tema obsahu Rastislav Siekel

Napríklad Hibernate s Oracle 10 po nastavení:

/Query.setFirstResult(x);
Query.setMaxResults(y);
/
vygeneruje SQL:

select
*
from
( select
row_.*,
rownum rownum_
from
( select
alias1_.column1,
alias1_.column2,

alias1_.columnN,
from
TABLE alias1_ ) row_
where
rownum = ?
)
where
rownum_  ?

To je asi presne to, čo chcete.

Rastislav Bedo Siekel


Ing. Rastislav Siekel
Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia
E-mail : sie...@prosoft.sk mailto:sie...@prosoft.sk
Tel : 041/562 54 91
Fax : 041/562 54 97
Mobil : 0905 34 00 20

On 11. 3. 2010 13:37, Lukas Barton wrote:

Hibernate to dela - metoda *setMaxResults*
Ale nemusi to chodit na vsech DB, zalezi na konkretnim dialektu - 
jeste nedavno to neumel pro MS SQL v kombinaci s *setFirstResult*.


Z tech dialektu se da vykoukat konkretni SQL implementace pro dane 
databaze.


  Lukas

2010/3/11 Oto Buchta ta...@buchtovi.cz mailto:ta...@buchtovi.cz

Zdravím,
mám tabulku o milionech záznamů, kde primárním klíčem je long, ale
nejedná se o seqenci.
Dívám se po generickém nástroji, který by mi vrátil pouze N záznamů s
nejvyšším indexem menším než nějaké X,
tedy umí něco, co by se mělo v JDBC řešit takto:
Connection.prepareStatement(select * from tabulka where klicX order
by klic desc).setMaxRows(N);

Jenomže toto je na řešeno na straně JDBC driveru, nikoli na straně
databáze. Když to chci udělat databázovým strojem,
musím to řešit pro každou DB zvlášť:
Oracle: select * from tabulka where klicX and rownum=N order by
klic desc
MySQL: select * from tabulka where klicX order by klic desc limit 1,N

Znáte takový generický nástroj, popřípadě dokážete poradit, jak
nastavit Hibernate či iBatis či cokoli jiného, aby mi tuto službu
poskytlo?
Já ne a kamarád Gůgl taky nenapověděl.

Dík moc,
--
Oto 'tapik' Buchta, ta...@buchtovi.cz mailto:ta...@buchtovi.cz,
http://tapikuv.blogspot.com




Re: Obdoba PreparedStatement.setMaxRows() na straně databáze

2010-03-11 Tema obsahu Oto Buchta
Diky. Nevim, proc jsem si myslel, ze se jedna o driver based reseni.

public String Dialect.getLimitString() je presne to, co jsem hledal.

Ted se jeste musim zamyslet, jestli pouzit cely Hibernate nebo pouze onu metodu.

2010/3/11 Lukas Barton lu...@cnawr.cz:
 Hibernate to dela - metoda setMaxResults
 Ale nemusi to chodit na vsech DB, zalezi na konkretnim dialektu - jeste
 nedavno to neumel pro MS SQL v kombinaci s setFirstResult.

 Z tech dialektu se da vykoukat konkretni SQL implementace pro dane databaze.

   Lukas

 2010/3/11 Oto Buchta ta...@buchtovi.cz

 Zdravím,
 mám tabulku o milionech záznamů, kde primárním klíčem je long, ale
 nejedná se o seqenci.
 Dívám se po generickém nástroji, který by mi vrátil pouze N záznamů s
 nejvyšším indexem menším než nějaké X,
 tedy umí něco, co by se mělo v JDBC řešit takto:
 Connection.prepareStatement(select * from tabulka where klicX order
 by klic desc).setMaxRows(N);

 Jenomže toto je na řešeno na straně JDBC driveru, nikoli na straně
 databáze. Když to chci udělat databázovým strojem,
 musím to řešit pro každou DB zvlášť:
 Oracle: select * from tabulka where klicX and rownum=N order by klic desc
 MySQL: select * from tabulka where klicX order by klic desc limit 1,N

 Znáte takový generický nástroj, popřípadě dokážete poradit, jak
 nastavit Hibernate či iBatis či cokoli jiného, aby mi tuto službu
 poskytlo?
 Já ne a kamarád Gůgl taky nenapověděl.

 Dík moc,
 --
 Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com





-- 
Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com


Re: hibernate a instanceOf

2010-03-11 Tema obsahu Ivan Polak
ano samozrejme mozem, len ma zaujimalo preco to nefunguje. urobil som to tak.

dakujem

Ivan

2010/3/11 Vaclav Stumbauer stum...@gmail.com:
 Nemuzete to prevest na rozhodnovani dle hodnoty discriminatoru?
 Ten si muzete namapovat jako vlastnost Custommera (update=false, insert=false)
 a nasledne provadet testy podle hodnoty teto vlastnosti.
 Pouzivat instanceofy a spol., navic v prostredi prolezlem
 proxynama, zejmena na dedicne strukture neni nejlepsi.

 VS


 2010/3/11 Ivan Polak ivan.po...@f4s.sk:
 a zabudol som napisat ze to nepomohlo :-(

 Ivan

 2010/3/11 Ivan Polak ivan.po...@f4s.sk:
 podla rady som uvedeny riadok :

 returnValue = Class.forName(className).isInstance(o);

 zmenil na:

 returnValue = o.getClass().isAssignableFrom(Class.forName(className));

 ako som uviedol className je premenna typu String s hodnotou
 com.project.Shipper
 a Objekt o je cez Hibernate vytiahnuty objekt z DB, zobraznene vo
 watch okne: Customer_$$_javassist_145 (...).


 dakujem

 Ivan

 2010/3/11 Kamil Podlesak kamil.podle...@gmail.com:
 Pokud si dobře pamatuji, tak tímto způsobem i sleduje, zda a kdy (a
 jak) se změnily hodnoty, aby je pak uložil.

 Každopádně, ještě bych dodal: původní tazatel udělal chybu v tom, že
 za dynamickou obdobu operátoru instanceof považoval Class.isInstance,
 což je špatně (správně je Class.isAssignableFrom).

 Kamil Podlešák

 2010/3/11 Roman Pichlík roman.pich...@gmail.com:
 Ne často, vždy :-)
 Je to základní princip fungování Hibernate.

 to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to potreba
 napr. lazy loading.

 --
 S pozdravem Roman Dagi Pichlik

 /* http://www.sweb.cz/pichlik/ Blog pro kodery */







Re: hibernate a instanceOf

2010-03-11 Tema obsahu Kamil Podlesak
Pozor na pořadí:
 A instanceof B  ==  B.class.isAssignableFrom(A.getClass())

ALE

Podíval jsem se na to pořádně a musím si posypat popel na hlavu:
problém je někde úplně jinde a isInstance by dokonce bylo správně.
Problém je ve skutečnosti v tom, že Hibernate vytvoří proxy pro
Customer, i když objekt je ve skutečnosti potomek.

Je to specifický problém Hibernate a řešením je deproxyfikace pomocí
(HibernateProxy)o).getHibernateLazyInitializer().getImplementation(),
případně vypnutí proxy pomocí @Proxy(lazy=false)  (tady je ale otázka
zda to je použitelné...). Více podrobností (a odkazy na další varianty
řešení) na:

http://blog.smart-java.nl/blog/index.php/2010/03/08/hibernate-lazy-loading-and-inheritance/

Kamil Podlešák

PS: Asi si budu muset stáhnout aktuální zdrojáky a podívat se, jakým
způsobem sleduje změny bez proxy, to mě docela zajímá.

2010/3/11 Ivan Polak ivan.po...@f4s.sk:
 podla rady som uvedeny riadok :

 returnValue = Class.forName(className).isInstance(o);

 zmenil na:

 returnValue = o.getClass().isAssignableFrom(Class.forName(className));

 ako som uviedol className je premenna typu String s hodnotou
 com.project.Shipper
 a Objekt o je cez Hibernate vytiahnuty objekt z DB, zobraznene vo
 watch okne: Customer_$$_javassist_145 (...).


 dakujem

 Ivan

 2010/3/11 Kamil Podlesak kamil.podle...@gmail.com:
 Pokud si dobře pamatuji, tak tímto způsobem i sleduje, zda a kdy (a
 jak) se změnily hodnoty, aby je pak uložil.

 Každopádně, ještě bych dodal: původní tazatel udělal chybu v tom, že
 za dynamickou obdobu operátoru instanceof považoval Class.isInstance,
 což je špatně (správně je Class.isAssignableFrom).

 Kamil Podlešák

 2010/3/11 Roman Pichlík roman.pich...@gmail.com:
 Ne často, vždy :-)
 Je to základní princip fungování Hibernate.

 to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to potreba
 napr. lazy loading.

 --
 S pozdravem Roman Dagi Pichlik

 /* http://www.sweb.cz/pichlik/ Blog pro kodery */





RE: hibernate a instanceOf

2010-03-11 Tema obsahu Tomas Hubalek
A co vlastne vraci o.getClass()?  

 -Original Message-
 From: konference-boun...@java.cz 
 [mailto:konference-boun...@java.cz] On Behalf Of Ivan Polak
 Sent: Thursday, March 11, 2010 1:54 PM
 To: Java
 Subject: Re: hibernate a instanceOf
 
 ano samozrejme mozem, len ma zaujimalo preco to nefunguje. 
 urobil som to tak.
 
 dakujem
 
 Ivan
 
 2010/3/11 Vaclav Stumbauer stum...@gmail.com:
  Nemuzete to prevest na rozhodnovani dle hodnoty discriminatoru?
  Ten si muzete namapovat jako vlastnost Custommera (update=false, 
  insert=false) a nasledne provadet testy podle hodnoty teto 
 vlastnosti.
  Pouzivat instanceofy a spol., navic v prostredi prolezlem 
 proxynama, 
  zejmena na dedicne strukture neni nejlepsi.
 
  VS
 
 
  2010/3/11 Ivan Polak ivan.po...@f4s.sk:
  a zabudol som napisat ze to nepomohlo :-(
 
  Ivan
 
  2010/3/11 Ivan Polak ivan.po...@f4s.sk:
  podla rady som uvedeny riadok :
 
  returnValue = Class.forName(className).isInstance(o);
 
  zmenil na:
 
  returnValue = 
  o.getClass().isAssignableFrom(Class.forName(className));
 
  ako som uviedol className je premenna typu String s hodnotou 
  com.project.Shipper
  a Objekt o je cez Hibernate vytiahnuty objekt z DB, zobraznene vo 
  watch okne: Customer_$$_javassist_145 (...).
 
 
  dakujem
 
  Ivan
 
  2010/3/11 Kamil Podlesak kamil.podle...@gmail.com:
  Pokud si dobře pamatuji, tak tímto způsobem i sleduje, 
 zda a kdy (a
  jak) se změnily hodnoty, aby je pak uložil.
 
  Každopádně, ještě bych dodal: původní tazatel udělal 
 chybu v tom, 
  že za dynamickou obdobu operátoru instanceof považoval 
  Class.isInstance, což je špatně (správně je 
 Class.isAssignableFrom).
 
  Kamil Podlešák
 
  2010/3/11 Roman Pichlík roman.pich...@gmail.com:
  Ne často, vždy :-)
  Je to základní princip fungování Hibernate.
 
  to bych nerekl, ze vzdycky vraci proxy. IMHO pouze pokud je to 
  potreba napr. lazy loading.
 
  --
  S pozdravem Roman Dagi Pichlik
 
  /* http://www.sweb.cz/pichlik/ Blog pro kodery */