Situatie:
Ik ben bezig met een relatief simpel programma, dat gebruikt maakt van een database om zijn gegevens in op te slaan, om te praten met de database gebruik ik (uiteraard) sql. Verder nog: het programma wordt in Java 5.0 geschreven (webinterface in jsp) en er zullen weinig concurrent users zijn (25 zal veel zijn, is voor inter gebruik).
Probleem
Waar laat ik mijn queries? Specifieker: om het programma goed onderhoudbaar te houden. Normaal gebruik ik twee manieren, namelijk gewoon inline in de code een querystring typen of een stored procedure gebruiken. Beide methoden gaan gepaard met voor- en nadelen.
Inline werkt makkelijk, todat er iets moet veranderen.... Een object dat een een extra attribuut krijgt, kan tot gevolg hebben dat je in veel klasses op zoek moet gaan naar queries, die veranderd moeten worden. Dit werkt dus zeker niet ideaal.
Voor stored procedures verwijs ik als leesvoer maar naar: http://gathering.tweakers.net/forum/list_messages/949801/0. Omdat ik zelf de database moet migreren van ms access naar mysql snap ik gelijk waarom stored procedures evil zijn, ik zou ze allemaal moet herschrijven! (Access gebruikt gewoon een query, mysql vereist wat meer werk)
Wat heb ik zelf bedacht?
Toevallig ben ik pas met het ImageRegistry voor SWT bezig geweest en volgens mij kan zo'n constructie ook hier handig zijn. Een Registry zorgt er voor dat er maar een instantie van een resource gemaakt wordt. De queries worden gewoon opgeslagen in een bestand, die je met een willekeurige editor kan bewerken, ze worden geidentificeerd met een unieke (bestands)naam. Zodra je programma een query moet uitvoeren wordt het bestand ingelezen en omgezet naar een PreparedStatement, een volgende keer kan dit object zo uit het QueryRegistry worden terug gegeven.
Dit heeft wel tot gevolg dat een query niet meerdere keren op het zelfde tijdstip uitgevoerd mag worden, maar dat kan ik garranderen in mijn app.
Hoe werken jullie en waarom?
... en kan mijn manier werken of kunnen jullie zo al dingen verzinnen waarom dit nooit zal gaan?
Ik ben bezig met een relatief simpel programma, dat gebruikt maakt van een database om zijn gegevens in op te slaan, om te praten met de database gebruik ik (uiteraard) sql. Verder nog: het programma wordt in Java 5.0 geschreven (webinterface in jsp) en er zullen weinig concurrent users zijn (25 zal veel zijn, is voor inter gebruik).
Probleem
Waar laat ik mijn queries? Specifieker: om het programma goed onderhoudbaar te houden. Normaal gebruik ik twee manieren, namelijk gewoon inline in de code een querystring typen of een stored procedure gebruiken. Beide methoden gaan gepaard met voor- en nadelen.
Inline werkt makkelijk, todat er iets moet veranderen.... Een object dat een een extra attribuut krijgt, kan tot gevolg hebben dat je in veel klasses op zoek moet gaan naar queries, die veranderd moeten worden. Dit werkt dus zeker niet ideaal.
Voor stored procedures verwijs ik als leesvoer maar naar: http://gathering.tweakers.net/forum/list_messages/949801/0. Omdat ik zelf de database moet migreren van ms access naar mysql snap ik gelijk waarom stored procedures evil zijn, ik zou ze allemaal moet herschrijven! (Access gebruikt gewoon een query, mysql vereist wat meer werk)
Wat heb ik zelf bedacht?
Toevallig ben ik pas met het ImageRegistry voor SWT bezig geweest en volgens mij kan zo'n constructie ook hier handig zijn. Een Registry zorgt er voor dat er maar een instantie van een resource gemaakt wordt. De queries worden gewoon opgeslagen in een bestand, die je met een willekeurige editor kan bewerken, ze worden geidentificeerd met een unieke (bestands)naam. Zodra je programma een query moet uitvoeren wordt het bestand ingelezen en omgezet naar een PreparedStatement, een volgende keer kan dit object zo uit het QueryRegistry worden terug gegeven.
Dit heeft wel tot gevolg dat een query niet meerdere keren op het zelfde tijdstip uitgevoerd mag worden, maar dat kan ik garranderen in mijn app.
Hoe werken jullie en waarom?
... en kan mijn manier werken of kunnen jullie zo al dingen verzinnen waarom dit nooit zal gaan?
"Ik heb zo veel soep gegeten, dat kan een mens niet aan. Ik heb zo veel soep gegeten, kan bijna niet meer staan. Ik zat daar maar te slurpen achter die grote kop en als ik bijna klaar was, dan schepten ze weer op!" (Hans Teeuwen)