Dit kan zeker voor u werken. Ik zal echter wat completer zijn voor toekomstige lezers van de vraag:
maar veel van de vragen die u schrijft, kunnen database-specifiek zijn, of vertrouwen op bepaalde zoekwoorden om effectief te zijn. Neem bijvoorbeeld een veelgestelde vraag. U wilt alle producten in een database weergeven, maar de gebruiker 10 tegelijk laten zien:
MySQL:
select * from products LIMIT 0,10
dan voor de volgende 10 rijen:
select * from products LIMIT 10,10
enz.
Fantastisch, zodat gebruikers MySQL kunnen gebruiken voor de database. Wel, wat als ze postgres gebruiken, een andere gratis en erg populaire database? Die vraag zal niet werken:
SELECT * FROM product LIMIT 10 OFFSET 10
Dus je code is niet zo veel draagbaar als je denkt.
Een manier om dit te omzeilen is om uw eigen interfaces (interfacequery, interface Access) te maken voor alle query's/toegangen die u van plan bent te doen, en dan een queryfabriek te hebben die kan instantiëren, op basis van de DB-dialect (MySQL, postgres) , enz.) en maak MySQLQueryImpl en PostGresQueryImpl aan (beide implementeren de Query-interface).
Je moet helaas een deel van de databaseaanroepen tweemaal coderen of ze zelf naar een eigenschappenbestand verplaatsen. U kunt ook de queryfactor ontwerpen om vanuit een eigenschappenbestand te instantiëren (zoals u oorspronkelijk wilt), en andere gebruikers in de toekomst toestemming geven om hun eigen query uit te voeren, zodat de uitbreidbaarheid er is en u het niet allemaal zelf hoeft te doen.
Or ...
De andere optie, die waarschijnlijk eleganter en foutbestendig is (nou ja ... misschien) is om iemand anders dit voor je te laten doen. Slaapstand is een veelgebruikt hulpprogramma dat de voor u lees-/schrijfdatabase abstract maakt en kan worden geconfigureerd om een verschillende database zoals u dat wilt, alleen heeft het jarenlange ervaring en bugfixes. Het is niet het gemakkelijkste om te leren (voor complexe query's en joins, enz.) Maar voor de basismodellen en toewijzing aan een database, het geeft je alles wat je wilt en meer, inclusief de mogelijkheid om caching heel gemakkelijk in en uit te schakelen en lui het laden van gegevens, zodat u niet duizenden records bij de hand hebt die u niet zult gebruiken. Het zou lang duren om een systeem als dit te maken en te verharden.