Dobry den.

Ospravedlnte prosim trosku offtopic prispevok.

Ako zacinajucemu javistovi mi viaceri ludia odporucali pouzivat hibernate. Ja 
o tom projekte neviem skoro nic, zhruba chapem principy. Dost sa ( ako byvali 
C++-kar ) bojim ist do nejakeho podobneho blackboxu, pretoze mam (opravnene*) 
pochybnosti o performance takehoto riesenia.

Uvedeny priklad mi padol do oka, pretoze by mi mohol nacrtnut situaciu okolo 
hibernate performance. To, co Pavel chce urobit pomocou hibernate, sa da na 
urovni sql elegantne riesit pomocou sql join-u.

Hrozne by ma zaujimalo, ake sql prikazy vygeneruje hibernate pri dotaze na 
zaznam z tabulky computers. Ci pouzije join, alebo bude len trapne selectovat 
z dvoch tabuliek. Pavle, nemohol by ste mi sem potom nejake sql dotazy z 
hibernate pastnut, ked to budete testovat?

Diky.


* nerad by som kohokolvek urazil, ale reci o tom ako je hw lacny a blablabla 
pridame pamat, procesor, disk pocuvam od skusenych javistov v jednom kuse. 
Konkretne o hibernate som sa bavil s jednym javistom vcera a jeho nazory 
vyzneli v tom duchu, ze kasleme na sql ficury, hlavne ze je to rychlo 
vyvinute. To ma vacsinou rozseka a stratim argumenty :-)

sql join:

  create table operating_systems ( id serial unique, name text ); 
  create table computers ( id serial unique, name text, idos integer \
  references operating_systems(id) );

  select * from computers join operating_systems on computers.idos =\
  operating_systems.id; 



> Vytvorit entitu:
>
> @Entity
> @Table(name = "operating_systems")
> public class OperatingSystem {
>     Long id;
>     String name;
>
>     @Id
>     @GeneratedValue(strategy=GenerationType.IDENTITY)
>     @Column(name = "id")
>     Long getId();
>     .
>     .
>     .
>     @Basic
>     @Column (name="name")
>     String getName();
>     .
>     .
>     .
> }
>
> a ve tride Computer dodat:
>
> protected OperatingSystem operatingSystem;
>
> @ManyToOne (cascade=CascadeType.REFRESH, fetch=FetchType.EAGER,
> optional=true)
> @JoinColumn(name="operating_system")
> public OperatingSystem getOperatingSystem();
> .
> .
> .
> Vice se doctete napriklad zde :
> http://www.hibernate.org/hib_docs/annotations/reference/en/html/
>
> Jaroslav Hurdes
>
> Pavel Zelenka napsal(a):
> > Zdravím,
> >
> > pro vysvětlení toho čeho chci dosáhnout :
> >
> > mám tabulku COMPUTER, která reprezentuje např. počítače ve firmě, s
> > položkami ID, NAME, IDOS
> > dále mám tabulku OS, což je čísleník známých operačních systémů, s
> > položkami IDOS, OSNAME
> >
> > zajímalo by mě, jak při mapování entity zajistit dotažení názvu
> > operačního systému.
> >
> > @Entity
> > @Table(name = "computer")
> > public class Computer implements Serializable {
> >     @Id
> >     @GeneratedValue(strategy=GenerationType.IDENTITY)
> >     @Column(name = "id")
> >     private Integer id;
> >     @Column(name="name")
> >     private String computerName;
> >
> > a tady dál už bych potřeboval poradit.
> >
> >
> > Díky
> >
> > Pavel Zelenka



-- 
Dusan

Odpovedet emailem