Ich habe bei mir im Spiel das ganze Datenbankframework aus Interesse daran wie sowas eigentlich geht selber programmiert (hätte auch Hibernate verwenden können :D).
Funktioniert auch recht flott, ich hätte doch für sehr oft durchgeführte Abfragen gerne einen Cache. Jetzt habe ich natürlich das Problem das ich bei 2 eigenständigen Abfragen herausfinden muss, ob diese nur equivalent sind oder nicht. Dabei spielt bei mir das "QueryKey" Objekt die entscheidende Rolle. Das Objekt besitzt eine Liste mit jeweils folgendem Eintrag für ein Feld:
"feldname" "wert"
und läuft logischerweise jeweils auf eine bestimmte Tabelle. Der Cache weiss also bereits auf welche Tabelle die Abfrage geht.
Ich habe jetzt mal versucht equals zu überschreiben und einen eindeutigen hash dadurch zu erreichen .. das ich die einzelnen feldnamen und werte in einem String zusammenschreibe und mir dann den String Hash geben lasse.
Beispiel:
"id"+"1"+"type"+"4" = "id1type4" (<- und von dem nacher den hashcode)
Ist sicherlich eine etwas naive Vorgehensweise und hat dementsprechend zwar für 95% funktioniert, aber in den restlichen Fällen, leider falsche Daten aus dem Cache zurückgegeben.
Hat vielleicht jemand eine Idee wie man hier eine eindeutige Identifzierung von Queries erreichen könnte?