Tomáš Procházka wrote:
Ahoj,
odpovídám na zprávu z pátku, 22. září 2006,
kterou Radim Tlustý napsal v 11:26:39:
Ještě na jednu otázku jsem ale nenašel řešení, když dělám desktopovou aplikaci,
která bude mít svou integrovanou databází? Je lepší použít po celou dobu jeden
entity manager, nebo volat emf.createEntityManager() pokaždé, když je potřeba
něco udělat?
Pouzit Hibernate pro desktopovou aplikaci je ponekud nepohodlne a je s
tim dost problemu.
Aby to fungovalo, musite napsat 2,5 vrstvou aplikaci s duslednym
oddelenim DAO (byznys) vrstvy od GUI aplikace.
Priklad problemu, mam objekt, jehoz zobrazeni a chovani (napriklad co
vidim v kontextovem menu) ve stromecku zavisi na 5 many-to-one
atributech. Kdyz takovych objektu chci v tom stromecku mit 5000, tak
bych pri praci s nimi musel provest radove 5000 dotazu do databaze...
- nelze mit moc objektu v jedne session, protoze pak se jakakoliv prace
s ni zpomaluje
- nelze mit session otevrenou prilis dlouho
- nelze tedy pouzivat lazy inicializace
- po jakekolich vyjimce je session neplatna a nelze ji dal pouzivat
Takze resni tohoto jednoho problemu je takove, ze se pomoci HQL select
new ValueObjekt(.....) from ..... nacitaji data potrebna pro zobrazeni
ze vsech 6 potrebnych tabulek (napr. se i pocita poce synu...) v jednom
dotazu.
Lukas