Heb tot nu toe DB abstractie gebruik gemaakt van Torque. Maar in vergelijking met Hibernate zijn de ontwikkelingen en support minder dan bij Hibernate. Wilde dus eens proberen over te stappen. Het begin ging vrij soepel maar nu loop ik tegen wat dingen aan die in de documentatie niet zijn beschreven of juist zo uitgebreid dat ik door de bomen het bos niet meer zie.
Het volgende is het geval: net als Hibernate maakt Torque bij reverse engineering van een bestaande DB voor elke tabel een java klasse aan. Hierin zaten bv. de column names as static final strings opgeslagen. Dit is heel handig bij het formuleren van queries. Wanneer je bijvoorbeeld een Person tabel heeft met een PersonID en je wilde Person met ID=3 opvragen, kreeg je queries met criteriums in de vorm van
In Hibernate moet je, voor zover ik het nu begrepen heb, zowel bij HQL als SQL queries steeds zelf weten welke colums zich in een tabel bevinden en hoe de tabel heet. Je krijgt dan bv.
met in het criterium:
Dit moet toch makkelijk kunnen? Ik moet toch bij het programmeren d.m.v. code completion kunnen zien welke velden Person heeft en daar mijn queries op kunnen baseren, zonder de structuur van buiten te kennen? Met andere woorden: ik wil niet steeds Strings "Person" en "PersonID" gebruiken, aangezien ik niet direct syntax controle heb en dus typefouten pas at runtime bemerk.
Een ander ding wat me uit de tutorial niet duidelijk wordt, is hoe de Manager klassen te ontwerpen. De tutorial maakt bv. voor het Object Event een EventManager klasse, waarbinnen dan specifieke functies (bv. create and store) geimplementeerd kunnen worden. Is dit de beste manier? M.a.w: moet ik voor elke Java klasse/DB Tabel een Manager implementeren? En hoe houd ik die dan gesynchroniseerd wanneer mijn Java Objecten opnieuw door Hibernate gegenereerd zijn?
Voor de volledigheid: ik gebruik Hibernate3.1.2. icm HibernateTools3.1.0beta4 en J2SDK1.5.0 (Geen J2EE dus!).
Het volgende is het geval: net als Hibernate maakt Torque bij reverse engineering van een bestaande DB voor elke tabel een java klasse aan. Hierin zaten bv. de column names as static final strings opgeslagen. Dit is heel handig bij het formuleren van queries. Wanneer je bijvoorbeeld een Person tabel heeft met een PersonID en je wilde Person met ID=3 opvragen, kreeg je queries met criteriums in de vorm van
Java:
1
| (Person.PersonID == 3). |
In Hibernate moet je, voor zover ik het nu begrepen heb, zowel bij HQL als SQL queries steeds zelf weten welke colums zich in een tabel bevinden en hoe de tabel heet. Je krijgt dan bv.
Java:
1
| session.createQuery("from Person") |
met in het criterium:
Java:
1
| Restrictions.eq("PersonID", 3). |
Dit moet toch makkelijk kunnen? Ik moet toch bij het programmeren d.m.v. code completion kunnen zien welke velden Person heeft en daar mijn queries op kunnen baseren, zonder de structuur van buiten te kennen? Met andere woorden: ik wil niet steeds Strings "Person" en "PersonID" gebruiken, aangezien ik niet direct syntax controle heb en dus typefouten pas at runtime bemerk.
Een ander ding wat me uit de tutorial niet duidelijk wordt, is hoe de Manager klassen te ontwerpen. De tutorial maakt bv. voor het Object Event een EventManager klasse, waarbinnen dan specifieke functies (bv. create and store) geimplementeerd kunnen worden. Is dit de beste manier? M.a.w: moet ik voor elke Java klasse/DB Tabel een Manager implementeren? En hoe houd ik die dan gesynchroniseerd wanneer mijn Java Objecten opnieuw door Hibernate gegenereerd zijn?
Voor de volledigheid: ik gebruik Hibernate3.1.2. icm HibernateTools3.1.0beta4 en J2SDK1.5.0 (Geen J2EE dus!).
[ Voor 14% gewijzigd door Swinnio op 02-02-2006 09:56 ]
If the world wouldn't suck, we'd all fall off