Re: Image do DB

2008-02-26 Tema obsahu Ondra �i�ka
Pøihodím svoji trošku do mlýna - zrovna nedávno øešila jedna firma ukládání 
obrázkù do MySQL, a ukázalo se to jako hodnì špatný nápad - výkon mizerný. 
Po pøepsání na ukládání do filesystému bìhá plynule.


<[EMAIL PROTECTED]> píše v diskusním pøíspìvku 
news:[EMAIL PROTECTED]
Ahoj,
mám dotaz. Mám Image img a potøebuju ho uložit v Derby DB.
Všechny návody na netu pro ukládání obrázkù do DB jsou pøes FileInputStream. 
Bohužel mì už pøíjde pøímo Image img a potøeboval bych ho uložit do DB.
Zkoušel jsem cestu pøes BLOB jenže se mì nepodaøilo pøevést Image na 
InputStream.
Konkrétnì jsem zkoušel pomocí ImageIO.createImageInputStream vytvoøit 
ImageInputStream a ten pak konvertovat do InputStreamu ale asi jsem dìlal 
nìco špatnì protože
Image img;
InputStream inStream = (InputStream) ImageIO.createImageInputStream(img). mì 
vždycky vrátí null;
nemohl by mì nìkdo nasmìrovat jak uložit Image img do DB.
Zkoušel jsem i pøes preparedStatement prepStat.setObject(3, img);
ale i tak nic.

Pøedem díky za jakoukoliv odpovìd Petr
ps.: pøedpokládám že mì nedošlo nìco základního a zkouším vymyslet kolo nebo 
nìco na ten zpùsob






Re: Spring HttpInvoker a dynamicke serviceUrl

2008-02-26 Tema obsahu radovan deka
myslite tu propertu serviceUrl? To mi prislo jako genialni napad (jednoduche, 
ale me by to nenapadlo), bohuzel se mi ji ale  v aplikacnim kodu nepodarilo 
nastavit. Zkousel jsem to napr. tak, ze jsem se pokusil vytahnout celou beanu 
serverServiceHttpInvokerProxy a nasledne ji nastavit serviceUrl.

ServletContext servletContext = 
getContext().getRequest().getSession().getServletContext();
WebApplicationContext wac = 
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
UrlBasedRemoteAccessor httpInvokerProxyFactoryBean = 
(UrlBasedRemoteAccessor) wac.getBean("serverServiceHttpInvokerProxy");

httpInvokerProxyFactoryBean.setServiceUrl("//localhost:8080/server/remoting/serverService");

ztroskotalo to vsak na tom, ze serverServiceHttpInvokerProxy je proxy:

java.lang.ClassCastException: $Proxy35 cannot be cast to 
org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean

Taky sem zkousel nasetovat serverServiceHttpInvokerProxy do moji tridy kde mam 
business logiku, ale skoncilo to podobnou vyjimkou, ze nemuze konvertovat 
[$Proxy35] na dany typ a jeste to napsalo: no matching editors or conversion 
strategy found. Muzete prosim jeste poradit jak by se dala ta properta v 
aplikacnim kodu nastavit? Nebo jsem to cely spatne pochopil?



>  Původní zpráva 
> Od: Roman Pichlik <[EMAIL PROTECTED]>
> Předmět: Re: Spring HttpInvoker a dynamicke serviceUrl
> Datum: 26.2.2008 20:35:58
> 
> asi bych tuto danou propertu nenastavoval pres Spring, ale udelal bych
> to vzdy v aplikacnim kodu.
>
> 2008/2/26 radovan deka <[EMAIL PROTECTED]>:
> > Jde jenom o to vybrat vzdaleny endpoint v runtime, aplikacni rozhrani vsech
> endpointu bude zname a stejne. Predem diky za radu.
> >
> >
> >  >  Původní zpráva 
> >  > Od: Roman Pichlik <[EMAIL PROTECTED]>
> >  > Předmět: Re: Spring HttpInvoker a dynamicke serviceUrl
> >  > Datum: 26.2.2008 18:31:09
> >  > 
> >
> >
> > > > A jakou byste obecne doporucili technologii, aby se dal co nejsnadneji
> splnit
> >  > pozadavek, ze vyber protejsi strany komunikace se deje az za behu 
> > aplikace.
> >  > > Bylo by to s RMI nebo Hessianem lepsi? A nebo Web service, o kterych
> zatim
> >  > vubec nic nevim?
> >  >
> >  > a jde jenom o to vybrat vzdaleny endpoint v runtime a nebo bude
> >  > kompletne nezname aplikacni rozhrani endpointu tj. nevite jestli tam
> >  > bezi WebService, Hessian a RMI?
> >  >
> >  >
> >  > >
> >  > >  >  Původní zpráva 
> >  > >  > Od: Roman Pichlik <[EMAIL PROTECTED]>
> >  > >  > Předmět: Re: Spring HttpInvoker a dynamicke serviceUrl
> >  > >  > Datum: 24.2.2008 10:16:03
> >  > >  > 
> >  > >
> >  > >
> >  > > > No to bude trohu problem, protoze chcete, aby se staticka konfigurace
> >  > >  > chovala dynamicky.
> >  > >  >
> >  > >  > Jake jsou moznosti:
> >  > >  >
> >  > >  > - serviceUrl nastavovat programove, az potom co je ziskana instance
> >  > >  > serverServiceHttpInvokerProxy
> >  > >  > - serviceUrl dotahovat pres PropertyPlaceholderConfigurer viz
> >  > >  > dokumentace. V takovem pripade se musi zmenit lifecycle beany a to 
> > na
> >  > >  > lazy inicializaci a nebo scope prototype, v dusledku toho ze hodnota
> >  > >  > nemusi byt znama pri inicializaci kontextu
> >  > >  > - udelat ze serviceUrl beanu s vlastni factory viz dokumentace, 
> > ktera
> >  > >  > bude v zavislosti na kontextu inicializovat jeji hodnotu. Problem se
> >  > >  > zmenou lifecycle serverServiceHttpInvokerProxy pretrva
> >  > >  >
> >  > >  >
> >  > >  > 2008/2/23 radovan deka <[EMAIL PROTECTED]>:
> >  > >  > > Ahoj, muj predesly prispevek neni tak dulezitej, zjistil sem, ze
> neni
> >  > zadnej
> >  > >  > problem to zinicializovat rucne. Velky starosti mi vsak dela, jak
> udelat,
> >  > abych
> >  > >  > URL adresu druhe aplikace mohl zadavat az za behu prvni aplikace. 
> > Ted
> tu
> >  > adresu
> >  > >  > zadavam primo v kontextu v definici beanu:
> >  > >  > >
> >  > >  > >  >  > >  >
> >  >
> class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
> >  > >  > >  >  > >  > value="http://localhost:8080/server/remoting/serverService"/>
> >  > >  > >  >  > >  > value="cz.vutbr.xkarel03.remote.ServerService"/>
> >  > >  > > 
> >  > >  > >  >  > >  >
> >  >
> class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"/>
> >  > >  > > 
> >  > >  > > 
> >  > >  > >
> >  > >  > >  ja bych ale potreboval, abych mohl adresu
> >  > >  > "http://localhost:8080/server/remoting/serverService"; zadat az ve
> webovem
> >  > >  > formulari, pac ta aplikace by mela umet komuikovat s vice jinymi
> >  > aplikacemi.
> >  > >  > Predem diky za pripadne info.
> >  > >  > >
> >  > > 

Re: Autorizaèní knihovna

2008-02-26 Tema obsahu Petr Ferschmann
Zdravím,

my používáme JBoss Drools společně s frameworkem Seam. Zítra (27. února)
se o těchto přístupových právech lechce zmíním na své přednášce. Pokud
budete mít zájem, můžeme to pak ještě třeba trošku probrat.

S pozdravem

Petr Ferschmann


Lukas Kubasek píše v Ne 24. 02. 2008 v 16:19 +0100:

> Ahoj, Ondro,
> 
> nevim, jestli to presne bude odpovidat tvym predstavam, ale zkus se
> urcite podivat na JBoss Rules (http://www.jboss.com/products/rules).
> To je framework implementujici Java Rule Engine API (JSR-94), kde je
> autorizace zalozena na tzv. pravidlech a ty se posleze dotazujes ve
> sve aplikaci systemem "muze uzivatel v roli A provest akci B?" atd.
> Vse o pravidlech autorizace je pak vedeno na jednom miste v
> konfiguracnim souboru.
> 
> Lukas Kubasek
> www.kubasek.cz
> 
> 
> 2008/2/24 Ondra ®i¾ka <[EMAIL PROTECTED]>:
> 
> Zdravim,
> 
> hledam nejakou knihovnu pro spravu opravneni, ale na urovni
> "row-level". Tim
> myslim, nechci rozlisovat zabezpeceni podle tridy objektu ci
> podle jeho URL.
> Spise hledam knihovnu, ktera bude spravovat prava k
> jednotlivym objektùm a
> budu moci polozit dotaz typu "mùze uzivatel A provadet operaci
> B nad
> objektem C" a chci dostat true / false. Melo by to umet
> skupiny, role,
> dedicnost opravneni, atd. Zkratka asi jako system prav ve
> Windows. uplne
> idealni by bylo, kdyby k tomu byla i webova aplikace pro
> samotnou spravu
> uzivatelù.
> 
> Autentizaci staci resit cimkoliv, momentalne to mam pres
> JDBCRealm, takze
> mam k dispozici uzivatele. Zbyva to slozitejsi, tedy vyse
> popsane moznosti
> autorizace.
> 
> Vite nekdo o necem? Zatim jsem jen trochu nakouknul do Acegi,
> ale zda se mi,
> ze to resi spise pristup k rùznym zdrojùm.
> 
> Diky, Ondra zizka
> 
> PS: Omlouvam se za duplicitu, zapomnel jsem psat bez
> kodovani...
> 
> 
> 
> 
> 

Petr Ferschmann

--
SoftEU s.r.o.
Lochotínská 18, 301 00 Plzeň, Česká republika
Phone: +420 373 731 284, +420 775 638 008
E-mail: [EMAIL PROTECTED]  http://www.softeu.com/


Re: Spring HttpInvoker a dynamicke serviceUrl

2008-02-26 Tema obsahu Roman Pichlik
asi bych tuto danou propertu nenastavoval pres Spring, ale udelal bych
to vzdy v aplikacnim kodu.

2008/2/26 radovan deka <[EMAIL PROTECTED]>:
> Jde jenom o to vybrat vzdaleny endpoint v runtime, aplikacni rozhrani vsech 
> endpointu bude zname a stejne. Predem diky za radu.
>
>
>  >  Původní zpráva 
>  > Od: Roman Pichlik <[EMAIL PROTECTED]>
>  > Předmět: Re: Spring HttpInvoker a dynamicke serviceUrl
>  > Datum: 26.2.2008 18:31:09
>  > 
>
>
> > > A jakou byste obecne doporucili technologii, aby se dal co nejsnadneji 
> > > splnit
>  > pozadavek, ze vyber protejsi strany komunikace se deje az za behu aplikace.
>  > > Bylo by to s RMI nebo Hessianem lepsi? A nebo Web service, o kterych  
> zatim
>  > vubec nic nevim?
>  >
>  > a jde jenom o to vybrat vzdaleny endpoint v runtime a nebo bude
>  > kompletne nezname aplikacni rozhrani endpointu tj. nevite jestli tam
>  > bezi WebService, Hessian a RMI?
>  >
>  >
>  > >
>  > >  >  Původní zpráva 
>  > >  > Od: Roman Pichlik <[EMAIL PROTECTED]>
>  > >  > Předmět: Re: Spring HttpInvoker a dynamicke serviceUrl
>  > >  > Datum: 24.2.2008 10:16:03
>  > >  > 
>  > >
>  > >
>  > > > No to bude trohu problem, protoze chcete, aby se staticka konfigurace
>  > >  > chovala dynamicky.
>  > >  >
>  > >  > Jake jsou moznosti:
>  > >  >
>  > >  > - serviceUrl nastavovat programove, az potom co je ziskana instance
>  > >  > serverServiceHttpInvokerProxy
>  > >  > - serviceUrl dotahovat pres PropertyPlaceholderConfigurer viz
>  > >  > dokumentace. V takovem pripade se musi zmenit lifecycle beany a to na
>  > >  > lazy inicializaci a nebo scope prototype, v dusledku toho ze hodnota
>  > >  > nemusi byt znama pri inicializaci kontextu
>  > >  > - udelat ze serviceUrl beanu s vlastni factory viz dokumentace, ktera
>  > >  > bude v zavislosti na kontextu inicializovat jeji hodnotu. Problem se
>  > >  > zmenou lifecycle serverServiceHttpInvokerProxy pretrva
>  > >  >
>  > >  >
>  > >  > 2008/2/23 radovan deka <[EMAIL PROTECTED]>:
>  > >  > > Ahoj, muj predesly prispevek neni tak dulezitej, zjistil sem, ze 
> neni
>  > zadnej
>  > >  > problem to zinicializovat rucne. Velky starosti mi vsak dela, jak 
> udelat,
>  > abych
>  > >  > URL adresu druhe aplikace mohl zadavat az za behu prvni aplikace. Ted 
> tu
>  > adresu
>  > >  > zadavam primo v kontextu v definici beanu:
>  > >  > >
>  > >  > >   > >  >
>  > 
> class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
>  > >  > >   > >  > value="http://localhost:8080/server/remoting/serverService"/>
>  > >  > >   > >  > value="cz.vutbr.xkarel03.remote.ServerService"/>
>  > >  > > 
>  > >  > >   > >  >
>  > 
> class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"/>
>  > >  > > 
>  > >  > > 
>  > >  > >
>  > >  > >  ja bych ale potreboval, abych mohl adresu
>  > >  > "http://localhost:8080/server/remoting/serverService"; zadat az ve 
> webovem
>  > >  > formulari, pac ta aplikace by mela umet komuikovat s vice jinymi
>  > aplikacemi.
>  > >  > Predem diky za pripadne info.
>  > >  > >
>  > >  >
>  > >  >
>  > >  >
>  > >  > --
>  > >  > S pozdravem Roman "Dagi" Pichlik
>  > >  >
>  > >  > /* http://www.sweb.cz/pichlik/ Blog pro kodery */
>  > >  >
>  > >  >
>  > >  >
>  > >
>  >
>  >
>  >
>  > --
>  > S pozdravem Roman "Dagi" Pichlik
>  >
>  > /* http://www.sweb.cz/pichlik/ Blog pro kodery */
>  >
>  >
>  >
>



-- 
S pozdravem Roman "Dagi" Pichlik

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


Re: Spring HttpInvoker a dynamicke serviceUrl

2008-02-26 Tema obsahu radovan deka
Jde jenom o to vybrat vzdaleny endpoint v runtime, aplikacni rozhrani vsech 
endpointu bude zname a stejne. Predem diky za radu.

>  Původní zpráva 
> Od: Roman Pichlik <[EMAIL PROTECTED]>
> Předmět: Re: Spring HttpInvoker a dynamicke serviceUrl
> Datum: 26.2.2008 18:31:09
> 
> > A jakou byste obecne doporucili technologii, aby se dal co nejsnadneji 
> > splnit
> pozadavek, ze vyber protejsi strany komunikace se deje az za behu aplikace.
> > Bylo by to s RMI nebo Hessianem lepsi? A nebo Web service, o kterych  zatim
> vubec nic nevim?
>
> a jde jenom o to vybrat vzdaleny endpoint v runtime a nebo bude
> kompletne nezname aplikacni rozhrani endpointu tj. nevite jestli tam
> bezi WebService, Hessian a RMI?
>
>
> >
> >  >  Původní zpráva 
> >  > Od: Roman Pichlik <[EMAIL PROTECTED]>
> >  > Předmět: Re: Spring HttpInvoker a dynamicke serviceUrl
> >  > Datum: 24.2.2008 10:16:03
> >  > 
> >
> >
> > > No to bude trohu problem, protoze chcete, aby se staticka konfigurace
> >  > chovala dynamicky.
> >  >
> >  > Jake jsou moznosti:
> >  >
> >  > - serviceUrl nastavovat programove, az potom co je ziskana instance
> >  > serverServiceHttpInvokerProxy
> >  > - serviceUrl dotahovat pres PropertyPlaceholderConfigurer viz
> >  > dokumentace. V takovem pripade se musi zmenit lifecycle beany a to na
> >  > lazy inicializaci a nebo scope prototype, v dusledku toho ze hodnota
> >  > nemusi byt znama pri inicializaci kontextu
> >  > - udelat ze serviceUrl beanu s vlastni factory viz dokumentace, ktera
> >  > bude v zavislosti na kontextu inicializovat jeji hodnotu. Problem se
> >  > zmenou lifecycle serverServiceHttpInvokerProxy pretrva
> >  >
> >  >
> >  > 2008/2/23 radovan deka <[EMAIL PROTECTED]>:
> >  > > Ahoj, muj predesly prispevek neni tak dulezitej, zjistil sem, ze neni
> zadnej
> >  > problem to zinicializovat rucne. Velky starosti mi vsak dela, jak udelat,
> abych
> >  > URL adresu druhe aplikace mohl zadavat az za behu prvni aplikace. Ted tu
> adresu
> >  > zadavam primo v kontextu v definici beanu:
> >  > >
> >  > >  >  >
> class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
> >  > >  >  > value="http://localhost:8080/server/remoting/serverService"/>
> >  > >  >  > value="cz.vutbr.xkarel03.remote.ServerService"/>
> >  > > 
> >  > >  >  >
> class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"/>
> >  > > 
> >  > > 
> >  > >
> >  > >  ja bych ale potreboval, abych mohl adresu
> >  > "http://localhost:8080/server/remoting/serverService"; zadat az ve webovem
> >  > formulari, pac ta aplikace by mela umet komuikovat s vice jinymi
> aplikacemi.
> >  > Predem diky za pripadne info.
> >  > >
> >  >
> >  >
> >  >
> >  > --
> >  > S pozdravem Roman "Dagi" Pichlik
> >  >
> >  > /* http://www.sweb.cz/pichlik/ Blog pro kodery */
> >  >
> >  >
> >  >
> >
>
>
>
> --
> S pozdravem Roman "Dagi" Pichlik
>
> /* http://www.sweb.cz/pichlik/ Blog pro kodery */
>
>
>


Re: Spring HttpInvoker a dynamicke serviceUrl

2008-02-26 Tema obsahu Roman Pichlik
> A jakou byste obecne doporucili technologii, aby se dal co nejsnadneji splnit 
> pozadavek, ze vyber protejsi strany komunikace se deje az za behu aplikace.
> Bylo by to s RMI nebo Hessianem lepsi? A nebo Web service, o kterych  zatim 
> vubec nic nevim?

a jde jenom o to vybrat vzdaleny endpoint v runtime a nebo bude
kompletne nezname aplikacni rozhrani endpointu tj. nevite jestli tam
bezi WebService, Hessian a RMI?


>
>  >  Původní zpráva 
>  > Od: Roman Pichlik <[EMAIL PROTECTED]>
>  > Předmět: Re: Spring HttpInvoker a dynamicke serviceUrl
>  > Datum: 24.2.2008 10:16:03
>  > 
>
>
> > No to bude trohu problem, protoze chcete, aby se staticka konfigurace
>  > chovala dynamicky.
>  >
>  > Jake jsou moznosti:
>  >
>  > - serviceUrl nastavovat programove, az potom co je ziskana instance
>  > serverServiceHttpInvokerProxy
>  > - serviceUrl dotahovat pres PropertyPlaceholderConfigurer viz
>  > dokumentace. V takovem pripade se musi zmenit lifecycle beany a to na
>  > lazy inicializaci a nebo scope prototype, v dusledku toho ze hodnota
>  > nemusi byt znama pri inicializaci kontextu
>  > - udelat ze serviceUrl beanu s vlastni factory viz dokumentace, ktera
>  > bude v zavislosti na kontextu inicializovat jeji hodnotu. Problem se
>  > zmenou lifecycle serverServiceHttpInvokerProxy pretrva
>  >
>  >
>  > 2008/2/23 radovan deka <[EMAIL PROTECTED]>:
>  > > Ahoj, muj predesly prispevek neni tak dulezitej, zjistil sem, ze neni 
> zadnej
>  > problem to zinicializovat rucne. Velky starosti mi vsak dela, jak udelat, 
> abych
>  > URL adresu druhe aplikace mohl zadavat az za behu prvni aplikace. Ted tu 
> adresu
>  > zadavam primo v kontextu v definici beanu:
>  > >
>  > >   > 
> class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
>  > >   > value="http://localhost:8080/server/remoting/serverService"/>
>  > >   > value="cz.vutbr.xkarel03.remote.ServerService"/>
>  > > 
>  > >   > 
> class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"/>
>  > > 
>  > > 
>  > >
>  > >  ja bych ale potreboval, abych mohl adresu
>  > "http://localhost:8080/server/remoting/serverService"; zadat az ve webovem
>  > formulari, pac ta aplikace by mela umet komuikovat s vice jinymi 
> aplikacemi.
>  > Predem diky za pripadne info.
>  > >
>  >
>  >
>  >
>  > --
>  > S pozdravem Roman "Dagi" Pichlik
>  >
>  > /* http://www.sweb.cz/pichlik/ Blog pro kodery */
>  >
>  >
>  >
>



-- 
S pozdravem Roman "Dagi" Pichlik

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


Re: persistence

2008-02-26 Tema obsahu Leoš Urban
Ahoj,

>Mám dvě tabulky

Máš objekt "klient" a objekt "adresa". Nejprve je objekt pak teprve SQL
tabulka. SQL tabulka je něco co je na pozadí a v optimálním případě se o
to vůbec nestaráš. Z hlediska výkonu se sice provádí SQL modifikace ale
to je věc jiná - pro začátek je lepší zůstat na úrovni objektů a jen
dohlížet že v SQL vzniká co má.

>@Entity
>public class Klienti implements Serializable {

Objektem (entitou) je pro Tebe "klient", nikoliv "klienti". Pokud to moc
vadí tak SQL tabulku si můžeš přejmenovat anotací @Table na množné číslo
aby se SQL tabulka jmenovala "klienti".

K tomu získání klíče nově vloženého klienta:
existují dvě možnosti na uložení entity (klient) do úložiště přes entity
manager. 

entityManager.persist(klient) a entityManager.merge(klient)

Ta druhá metoda (merge) vrací změněný objekt a tam máš vyplněn toužebně
očekávaný ID.

Nicméně u TopLinku pokud mně paměť neklame to v tomto případě
nepotřebuješ.

Zkus schematicky toto:

Klient klient = new Klient();
klient.nazev = "Walt Disney";
List kolekce = new ArrayList();
{
  Adresa a = new Adresa();
  a.setKlient(klient);  // !!!
  a.setJmeno("Mickey Mouse");
  kolekce.add(a);
}
{
  Adresa a = new Adresa();
  a.setKlient(klient);  // !!!
  a.setJmeno("Kacer Donald");
  kolekce.add(a);
}
klient.setAdresy(kolekce);

Klient zalozenyKlient = em.merge(klient);


Všimni si, ze vůbec nevolám adresa.persist() - to dělá  samotné JPA -
požádal jsi o uložení _entity_ Klient a ta má v kompozici objekty Adresa
(a je povolen CASCADE).

Zkus to.

Leoš



Re: persistence

2008-02-26 Tema obsahu Ing. Jan Novotný
Ahoj,

   jestli ti vadí komplexnost a neprůhlednost Hibernate (což se ani
nedivím) a tlačí tě čas, zkus zvážit iBatis
(http://ibatis.apache.org/). Zajímavé informace o rozdílu mezi JPA
like frameworky (Hibernate, Toplink) a ostatními jsou třeba v diskusi
k Dagiho článku:
http://www.haloscan.com/comments/dagi/1487532516827250446/

   Pravda je, že s iBatisem se napíšeš o něco víc, ale dostaněš se do
něj asi za půl dne, používáš staré dobré vyladěné SQL, princip je tak
jednoduchý, že nikdy neztratíš kontrolu a nikdy tě nemile nepřekvapí.

Něco málo o iBatisu je i tady (jen takové rychlé overview):
http://blog.novoj.net/2007/05/08/ibatis-sqlmaps-tak-trochu-opomijeny-orm/

Honza N.

26.2.08, Arne <[EMAIL PROTECTED]>:
> No tak přece jen něco. Schválně jsem napsal trošku provokativní odpověď, 
> protože se do odpovědi nikomu nechce.
>
>  O POJO už jsem zavadil, jenže z těch kusých poznámek co jsem vygooglil 
> (strašné slovo) jsem jistil, že to s tím souvisí. Jenže když o tom člověk nic 
> neví, tak je někdy těžké z kusých informací, kdy se někdo k něčemu vyjadřuje 
> a návaznosti na NECO - většinou změť zkratek, které mi ještě nic neříkají, 
> tak je hodně těžké se v tom orientovat.
>  Nakonec jsem našel alespoň jakýs takýs zestručněný (a nepřehledný) tutorial 
> k toplinku.
>
>  O hibernate se hovořilo pouze v souvislosti s webem, takže vřelé díky za 
> informaci co k tomu patří, konečně snad vím, co mám hledat.
>  Ovšem asi bude lepší se naučit jedno. Bohužel nevím, jestli to co podporuje 
> NetBeans, tj.oracle.toplink je to nejlepší.
>
>  Je to jak říkáte, že je potřeba myslel objektově, ale když člověka tlačí 
> čas, tak bližší košile než kabát :--). A tohle studium "novinek" vypadá ještě 
> na dlouho.
>
>  Překvapuje mě, že ne trhu není žádná rozumná kniha, která by tyhle "novinky" 
> postihla. Pokud jsem koukal poslední dobou do toho co je na pultech, tak mi 
> připadá, že ti lidi to od sebe opisují a největší novinka je java v1.2. O 
> anotacích když tak zmínka, že to existuje.
>  Neví někdo o něčem ?
>
>  Angličtina není až tak velký problém, jak to, že je těch informací na netu 
> tolik, že je strašně časově náročné dostat se přes balast k relevantní 
> informaci. V době elektroniky je na tom stejně z hlediska informovanosti 
> nejlépe ten, kdo má možnost s nějakým jiným odborníkem u kafe konzultovat 
> problémy z očí do očí a od tužky k tužce :).
>
>  Ještě jednou díky za nasměrování!
>
> Arne
>
>  >   Původní zpráva 
>  >  Od: Karel Tejnora <[EMAIL PROTECTED]>
>  >  Předmět: Re: persistence
>
> >  Datum: 26.2.2008 14:05:27
>  >  
>
> >
>  >  PS: toplink neznam, ale doufam ze sem nikoho neuvedl v omyl a pokud se
>  >  mylim rad se poucim. Tak prosim nemumlejte si pod vousy a napiste
>  >  opravy.
>  >
>  >
>  >
>  >
>


-- 
--
Ing. Jan Novotný
@@
http://blog.novoj.net
Myšlenky dne otce Fura
--


Re: persistence

2008-02-26 Tema obsahu Arne
No tak přece jen něco. Schválně jsem napsal trošku provokativní odpověď, 
protože se do odpovědi nikomu nechce.

O POJO už jsem zavadil, jenže z těch kusých poznámek co jsem vygooglil (strašné 
slovo) jsem jistil, že to s tím souvisí. Jenže když o tom člověk nic neví, tak 
je někdy těžké z kusých informací, kdy se někdo k něčemu vyjadřuje a návaznosti 
na NECO - většinou změť zkratek, které mi ještě nic neříkají, tak je hodně 
těžké se v tom orientovat.
Nakonec jsem našel alespoň jakýs takýs zestručněný (a nepřehledný) tutorial k 
toplinku.

O hibernate se hovořilo pouze v souvislosti s webem, takže vřelé díky za 
informaci co k tomu patří, konečně snad vím, co mám hledat.
Ovšem asi bude lepší se naučit jedno. Bohužel nevím, jestli to co podporuje 
NetBeans, tj.oracle.toplink je to nejlepší.

Je to jak říkáte, že je potřeba myslel objektově, ale když člověka tlačí čas, 
tak bližší košile než kabát :--). A tohle studium "novinek" vypadá ještě na 
dlouho.

Překvapuje mě, že ne trhu není žádná rozumná kniha, která by tyhle "novinky" 
postihla. Pokud jsem koukal poslední dobou do toho co je na pultech, tak mi 
připadá, že ti lidi to od sebe opisují a největší novinka je java v1.2. O 
anotacích když tak zmínka, že to existuje.
Neví někdo o něčem ?

Angličtina není až tak velký problém, jak to, že je těch informací na netu 
tolik, že je strašně časově náročné dostat se přes balast k relevantní 
informaci. V době elektroniky je na tom stejně z hlediska informovanosti 
nejlépe ten, kdo má možnost s nějakým jiným odborníkem u kafe konzultovat 
problémy z očí do očí a od tužky k tužce :).

Ještě jednou díky za nasměrování!
Arne

>   Původní zpráva 
>  Od: Karel Tejnora <[EMAIL PROTECTED]>
>  Předmět: Re: persistence
>  Datum: 26.2.2008 14:05:27
>  
>
>  PS: toplink neznam, ale doufam ze sem nikoho neuvedl v omyl a pokud se
>  mylim rad se poucim. Tak prosim nemumlejte si pod vousy a napiste
>  opravy.
>
>
>
>


Re: Java Messaging - ActiveMQ

2008-02-26 Tema obsahu Jiří Mareš

> Jenze kdyz sem si hral s JMS naposledy, tak to fungovalo pekne dokud:
> sem si mohl bindovat na producerovi jaky chci port a posilat cokoliv
> kamkoliv - Je pravda ze ActiveMQ resi omezeni site tak, ze protuneluje
> data jako http (REST)? Funguje to transparentne?
> Co se stane se zpravou, kdyz zednik otoci antenou - bude se posilani
> zpravy opakovat po nejakych intervalech (jako napr. smtp)?

Podle toho co vim, kdyz jsme to delali a chteli jsme pouzit jako konektor 
protokol HTTP. V ramci ActiveMQ jsou dva
servlety, ktere se umi pripojit do queue a pokusit se z ni precist zpravu a tu 
poslat jako odpoved na HTTP pozadavek.
Pro bez je vyzadovano Jetty protoze pouzivaji Continuations.

Pokud mate vse spravne nastveno, pak se zpravy ukladaji transakcne do db, takze 
ke ztrate nemuze dojit ..

Do jedne fronty muze zapisovat vice produceru, takze klidne muzete mit jednu 
instanci ActiveMQ a na ni jedno frontu pro
ruzne typy zprav, nebo 2 fronty pro ruzne druhy zprav, to je asi na vas ..

Jira

PS. nejaka autentizace pro pripojeni k ActiveMQ se jiste take resit da, protoze 
jinak by to bylo reseni naprd.
-- 
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic



Java Messaging - ActiveMQ

2008-02-26 Tema obsahu Karel Tejnora
Hej ho,

potrebuju si ujasnit par veci ohledne JMS a posilani dat. Mam rekneme 3
ruzne ucetni systemi a centralni system. Na tech 3 systemech vystavujou
faktury a centralni ma jejich zkracenku evidovat jako zaznam (platce,
prijemce, castka). Ty 3 systemy jsou produkty 3tich stran. Nejakym
zpusobem se budu snazit cist back-end db (planuju v jetty spusti quartz
job ktery pres iBatis namapuje entitu faktura zaserializuju do xml s
nejaky prikazem tj. asi neco jako ...).

Mno a ted jak vyresit bezpecny presun na centralni server.
Takze JMS klient producer v jetty na ucetnim s a na centralnim s broker
a consumer. To chapu - na strankach ActiveMQ je prikladu dost.

Jenze kdyz sem si hral s JMS naposledy, tak to fungovalo pekne dokud:
sem si mohl bindovat na producerovi jaky chci port a posilat cokoliv
kamkoliv - Je pravda ze ActiveMQ resi omezeni site tak, ze protuneluje
data jako http (REST)? Funguje to transparentne?
Co se stane se zpravou, kdyz zednik otoci antenou - bude se posilani
zpravy opakovat po nejakych intervalech (jako napr. smtp)?

Neznate nejaky tutorial, kde by tento pripad tj. zpravy ze sveta na
jeden server i s resenim Dead letter? Spis hledam jak to udelat spravne.
Zkousel jsem googlit, ale bud se dostanu na obecny popis JMS, nebo jak
kde co nastavit jak JMS klienta nebo na nejake reseni (replikace DB
atp.) ktere neni to co potrebuju. Narazil jsem na Enterprise Integration
Patterns - ma cenu se zabyvat Camel?

Kdyz ma ty 3 systemy a dva typy zpravy, je dobre si udelat pro kazdy
zvlast frontu (napr. UK_A.paragomy, UK_A.faktury, UK_SC.paragomy,
UK_SC.faktury, CZ.paragomy, CZ.faktury) nebo jednu a resit to na urovni
zpravy? Nebo kecam voloviny a dela se to jinak?

Dekuji za Vas cas,
KT



Re: Image do DB

2008-02-26 Tema obsahu Lukas Barton
Jeste muzete udelat nahravani do/z blobu tak, ze data ulozite do temp 
souboru.

Jen musite zaridit jeho mazani.

  Lukas

Filip Jirsák wrote:

Zdravím,
pokud ty obrázky nejsou moc velké, uložte je do ByteArrayOutputStream,
a z něj si pak vytáhněte metodou toByteArray() pole bajtů, které buď
uložíte do DB přímo, nebo jej obalíte ByteArrayInputStreamem.  Pokud
byste ukládal větší obrázky, zvětšte JVM velikost paměti, kterou může
používat, s případným nedostatkem RAM by se měl vypořádat systémový
swap. Teprve kdyby to byly opravdu velké obrázky, musle byste to řešit
nějakým ukládáním po částech, ale na to byste asi nepoužíval DerbyDB…

Filip Jirsák

26.2.08, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:
  

Ahoj,
 mám dotaz. Mám Image img a potřebuju ho uložit v Derby DB.
 Všechny návody na netu pro ukládání obrázků do DB jsou přes FileInputStream. 
Bohužel mě už příjde přímo Image img a potřeboval bych ho uložit do DB.
 Zkoušel jsem cestu přes BLOB jenže se mě nepodařilo převést Image na 
InputStream.





Re: Image do DB

2008-02-26 Tema obsahu Filip Jirsák
Zdravím,
pokud ty obrázky nejsou moc velké, uložte je do ByteArrayOutputStream,
a z něj si pak vytáhněte metodou toByteArray() pole bajtů, které buď
uložíte do DB přímo, nebo jej obalíte ByteArrayInputStreamem.  Pokud
byste ukládal větší obrázky, zvětšte JVM velikost paměti, kterou může
používat, s případným nedostatkem RAM by se měl vypořádat systémový
swap. Teprve kdyby to byly opravdu velké obrázky, musle byste to řešit
nějakým ukládáním po částech, ale na to byste asi nepoužíval DerbyDB…

Filip Jirsák

26.2.08, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:
> Ahoj,
>  mám dotaz. Mám Image img a potřebuju ho uložit v Derby DB.
>  Všechny návody na netu pro ukládání obrázků do DB jsou přes FileInputStream. 
> Bohužel mě už příjde přímo Image img a potřeboval bych ho uložit do DB.
>  Zkoušel jsem cestu přes BLOB jenže se mě nepodařilo převést Image na 
> InputStream.


Re: persistence

2008-02-26 Tema obsahu Karel Tejnora

> Asi od toho balíčku očekávám moc.
Je treba zmenit mysleni a myslet v objektech. SQL ma byt uplne
zastineno.
> Na to jak dlouho hledám informace (asi to neumím) mi připadá,
Jde o pracovni navyk - taky mne to slo blbe. Je dobre si koupit nejaky
dobry a aktualni slovnik, napr. Cambridge nebo tak. Zlepsi se Vam
anglictina sama a dr. Google bude Vas kamarad.

> Hibernate řeši zřejmě to stejné ale funguje i pro desktop, nebo to je
> vyloženě webovská záležitost? 
Zkuste se podivat i po iBatis - mozna vam sedne nejvice. U vsech plati
(toplink,Hibernate,iBatis) ze se pouzivaji vsude ne jenom na webu.
> Umí řešit i tohle ukládání v kaskádě a zjistit si aktuální hodnotu
>  vazebního klíče?
Problem bude v tom jak to mate nakodovane viz dale.
>  že kdybych zůstal u starého dobrého SQL, tak to mám dávno hotové.
Pro male projekty je to pravda. Sila ORM je u mnoha entit, kdy se do hry
dostanou dalsi nastroje jako AOP a pak napr. transakce resite
deklarativne (napr. reknete neco jako vsechny metody co zacinaji get
jsou tenhle typ a vyzaduji novou transakci nebo se ucastni stavajici).
Vyhozena vyjimka udela sama rollback atp.
> Nakonec při veškerém úsilí to nepozná, že to má po kaskádě dělá uložit
> s novým klíčem.
Jeste se musite podivat po DAO a POJO:
Klient je POJO - Stary cisty Java objekt, tj. nikdo si s nim na pozadi
nejak nehraje.
Ten by mel mit set/get pro svoje promenne a pro relaci Klient-Adresy
(Taky se tomu rika Entity a ty se prevadi na Value Objekt)
Klient#getJmeno():String // jmeno
Klient#setJmeno(jmeno : String) // nastavi jmeno
Klient#getAdresy():nejaka Kolekce // vraci adresy klienta
Klient#setAdresy(:nejaka Kolekce)

// objektove udelani vazby 
Klient#addAdresa(Adresa adresa)
{
klient.getAdresy().put/add(adresa);
adresa.setKlient(this);
}

pak je tu DAO tak delate entityManager.persist delete a atp.

tj.
KlientiDao {
void ulozKlienta(klient)
{
entityMamanger.persist(...)
}
}
No a nekde ve formulari bude te mit
k = new Klient();
..
a = new Adresa(); ...
k.addAdresa(a);
getKlientiDao().ulozKlienta(k);

Trosku na hlavu ne? Ano i Ne. Kazda vrstva resi neco jineho - POJO resi
jak jsou data ulozena (mozna jako DDL) a DAO resi jak se s nima naklada
(DML).

> Co jsem našel je , jak se nastaví relace, ale že to neumí takové triviality 
> jsem se nedočetl.
To je alfa a omega vsech problemu s ORM - napoprve nemusi fungovat tak
jak si myslime... i na podruhe, potreti...po stobilliontyprvni :-D
> Takže si nejsem jistý, že se nebudu potýkat s dalšími záludnostmi černé 
> skřínky.
> Zlatý starý dobrý SQL.
No a ted si vemte, ze mate annotace, spoustu "balastu" okolo a to vse se
preklada v nejaky SQL dotaz, ktery nebyva optimalni.
> Proč jsem do toho šel byl jediný důvod, že si to postavilo přes binding samo 
> tabulku. No ale když jí předhodím list, tak si ji postaví taky. Takže mě 
> tohle komplikované nastavování anotacemi tedy moc neuspokojilo.
> Možná na to nemám dost času a trpělivosti.
Kde ORM setri praci je pripad, kdy mate cisty novy projekt a sednete ke
kreslitku UML - napraskate entity ulozite a napise mvn install a ono
samo to udela tabulky, entity, vo, dao, services  i jednoduche dotazy
typu findByRok()
Udelate dalsi diagram a samo to vygeneruje webove stranky i s akcemi.
Ukazete designerovy, ten doda par obrazku a klient je ready na prijeti
faktury.
(neverite: ->google -> andromda crud)

PS: toplink neznam, ale doufam ze sem nikoho neuvedl v omyl a pokud se
mylim rad se poucim. Tak prosim nemumlejte si pod vousy a napiste
opravy.



Re: Image do DB

2008-02-26 Tema obsahu Ján Valkovič




Ospravedlnujem sa, tato linka http://www.eggheadcafe.com/articles/20020929.asp
sa netyka javy. Google mi podhodil .NET a nevsimol som si to :-)

ya

Ján Valkovič  wrote / napísal(a):

  
  
  Zdravim,
nieco taketo by Vam nepomohlo?
  http://www.eggheadcafe.com/articles/20020929.asp
  http://www.roseindia.net/javatutorials/serializing_objects_into_database.shtml
  
Mala by to byt serializacia/deserializacia objektu do databazy.
  
ya
  
  [EMAIL PROTECTED]  wrote /
napísal(a):
  
Ahoj,
mám dotaz. Mám Image img a potřebuju ho uložit v Derby DB.
Všechny návody na netu pro ukládání obrázků do DB jsou přes FileInputStream. Bohužel mě už příjde přímo Image img a potřeboval bych ho uložit do DB.
Zkoušel jsem cestu přes BLOB jenže se mě nepodařilo převést Image na InputStream.
Konkrétně jsem zkoušel pomocí ImageIO.createImageInputStream vytvořit ImageInputStream a ten pak konvertovat do InputStreamu ale asi jsem dělal něco špatně protože
Image img;
InputStream inStream = (InputStream) ImageIO.createImageInputStream(img). mě vždycky vrátí null;
nemohl by mě někdo nasměrovat jak uložit Image img do DB.
Zkoušel jsem i přes preparedStatement prepStat.setObject(3, img);
ale i tak nic.

Předem díky za jakoukoliv odpověd Petr
ps.: předpokládám že mě nedošlo něco základního a zkouším vymyslet kolo nebo něco na ten způsob



  
  






Re: Image do DB

2008-02-26 Tema obsahu Ján Valkovič




Zdravim,
nieco taketo by Vam nepomohlo?
http://www.eggheadcafe.com/articles/20020929.asp
http://www.roseindia.net/javatutorials/serializing_objects_into_database.shtml

Mala by to byt serializacia/deserializacia objektu do databazy.

ya

[EMAIL PROTECTED]  wrote / napísal(a):

  Ahoj,
mám dotaz. Mám Image img a potřebuju ho uložit v Derby DB.
Všechny návody na netu pro ukládání obrázků do DB jsou přes FileInputStream. Bohužel mě už příjde přímo Image img a potřeboval bych ho uložit do DB.
Zkoušel jsem cestu přes BLOB jenže se mě nepodařilo převést Image na InputStream.
Konkrétně jsem zkoušel pomocí ImageIO.createImageInputStream vytvořit ImageInputStream a ten pak konvertovat do InputStreamu ale asi jsem dělal něco špatně protože
Image img;
InputStream inStream = (InputStream) ImageIO.createImageInputStream(img). mě vždycky vrátí null;
nemohl by mě někdo nasměrovat jak uložit Image img do DB.
Zkoušel jsem i přes preparedStatement prepStat.setObject(3, img);
ale i tak nic.

Předem díky za jakoukoliv odpověd Petr
ps.: předpokládám že mě nedošlo něco základního a zkouším vymyslet kolo nebo něco na ten způsob



  






Re: persistence

2008-02-26 Tema obsahu Arne
Díky alespoň za to :-)!

Asi od toho balíčku očekávám moc. Na to jak dlouho hledám informace (asi to 
neumím) mi připadá, že kdybych zůstal u starého dobrého SQL, tak to mám dávno 
hotové.
Nakonec při veškerém úsilí to nepozná, že to má po kaskádě dělá uložit s novým 
klíčem.
Co jsem našel je , jak se nastaví relace, ale že to neumí takové triviality 
jsem se nedočetl. Takže si nejsem jistý, že se nebudu potýkat s dalšími 
záludnostmi černé skřínky.
Zlatý starý dobrý SQL.

Proč jsem do toho šel byl jediný důvod, že si to postavilo přes binding samo 
tabulku. No ale když jí předhodím list, tak si ji postaví taky. Takže mě tohle 
komplikované nastavování anotacemi tedy moc neuspokojilo.
Možná na to nemám dost času a trpělivosti.

Jsou od toho někde zdrojáky?
Hibernate řeši zřejmě to stejné ale funguje i pro desktop, nebo to je vyloženě 
webovská záležitost?
Umí řešit i tohle ukládání v kaskádě a zjistit si aktuální hodnotu vazebního 
klíče?

Zatím díky a příjemný den :-)!
Arne

>   Původní zpráva 
>  Od: Karel Tejnora <[EMAIL PROTECTED]>
>  Předmět: Re: persistence
>  Datum: 26.2.2008 00:00:21
>  
>  Ahoj,
>
>
>  > Ovšem při pokusu založit klienta i jeho adresu zároveň nelze.
>  > Nepřenese se do adresy klíč klienta a insert zkončí na tom,
>  > že databáze zabrání vložení null hodnoty.
>
>  toplink neznam, i kdyz brzo asi poznam, ale obecne tenhle problem je v
>  tom, ze se dve entity sice svazou pres cizi klic, ale porad je to
>  operace v pameti tj. cizi klic je null, nebot pk klienta je take null
>
>  'najednou' znamena ulozit klienta (tj. poslat do db ziskat jeho
>  synteticky/generovany klic) a pridat adresu kli.newAdresar() - ted se
>  zavola cosi jako adresa.setFK(klient.pk()) ale uz se znalosti pk
>  klienta.
>
>  Tj. s adresou 'najednou' je to totez jako ji pridat k existujicimu
>  klientovi. Pak se to resi tak ze tyto dve metody vytvorKlienta a
>  vytvorAdresu jsou na stejne transakci. vytvorAdresu pak ma nastaveno
>  pokud volas a si v transakci tak ji pouzij, pokud ne zaloz novou. No a
>  kdyz se s adresou cosi nepovede tak se odroluje i klient (v pripade
>  'najednou').


Re: Image do DB

2008-02-26 Tema obsahu Martin Kuba

[EMAIL PROTECTED] napsal(a):

Ahoj,
mám dotaz. Mám Image img a potřebuju ho uložit v Derby DB.
Všechny návody na netu pro ukládání obrázků do DB jsou přes FileInputStream. 
Bohužel mě už příjde přímo Image img a potřeboval bych ho uložit do DB.
Zkoušel jsem cestu přes BLOB jenže se mě nepodařilo převést Image na 
InputStream.
Konkrétně jsem zkoušel pomocí ImageIO.createImageInputStream vytvořit 
ImageInputStream a ten pak konvertovat do InputStreamu ale asi jsem dělal něco 
špatně protože
Image img;
InputStream inStream = (InputStream) ImageIO.createImageInputStream(img). mě 
vždycky vrátí null;
nemohl by mě někdo nasměrovat jak uložit Image img do DB.
Zkoušel jsem i přes preparedStatement prepStat.setObject(3, img);
ale i tak nic.

Předem díky za jakoukoliv odpověd Petr
ps.: předpokládám že mě nedošlo něco základního a zkouším vymyslet kolo nebo 
něco na ten způsob


Řekl bych, že ten Image je typu, pro který ImageIO neumí vytvořit
ImageInputStream. Zkusil bych pomocí

ImageIO.write(RenderedImage im, String formatName, File output)

zapsat ten obrázek jako třeba PNG, a z toho File ho pak
načíst jako InputStream do BLOBu.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: [EMAIL PROTECTED]
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Image do DB

2008-02-26 Tema obsahu proubal
Ahoj,
mám dotaz. Mám Image img a potřebuju ho uložit v Derby DB.
Všechny návody na netu pro ukládání obrázků do DB jsou přes FileInputStream. 
Bohužel mě už příjde přímo Image img a potřeboval bych ho uložit do DB.
Zkoušel jsem cestu přes BLOB jenže se mě nepodařilo převést Image na 
InputStream.
Konkrétně jsem zkoušel pomocí ImageIO.createImageInputStream vytvořit 
ImageInputStream a ten pak konvertovat do InputStreamu ale asi jsem dělal něco 
špatně protože
Image img;
InputStream inStream = (InputStream) ImageIO.createImageInputStream(img). mě 
vždycky vrátí null;
nemohl by mě někdo nasměrovat jak uložit Image img do DB.
Zkoušel jsem i přes preparedStatement prepStat.setObject(3, img);
ale i tak nic.

Předem díky za jakoukoliv odpověd Petr
ps.: předpokládám že mě nedošlo něco základního a zkouším vymyslet kolo nebo 
něco na ten způsob