Ich habe bereits eine Menge existierender Daten in meiner Datenbank und möchte einen Punktemechanismus entwickeln, der für jeden Benutzer eine Punktzahl basierend auf seinen Aktionen berechnet.Entwerfen eines Punktsystems im Frühjahr
Ich implementiere diese Funktionalität in einer pluggable Weise, so dass sie unabhängig von der Hauptlogik ist und auf Frühlingsereignissen basiert, die gesendet werden, sobald eine Entität geändert wird.
Das Problem ist, was mit den vorhandenen Daten zu tun ist. Ich möchte ab jetzt keine Punkte sammeln, sondern alle Daten bis jetzt einbeziehen.
Was ist der praktischste Weg, dies zu tun? Soll ich meine Plugins so gestalten, dass eine index() -Methode verwendet wird, die mein System dazu zwingt, jede einzelne Entität von der Datenbank abzurufen, sende ein EntityDirtyEvent, feuere die Punkte-Plugins für jedes und aktualisiere es dann es, um Punkte neben jeder Entität gespeichert zu lassen. Das könnte viel Overhead zur Folge haben, oder?
Die einfachste Sache wäre, eine komplexe gespeicherte Prozedur zu erstellen, und dann die index() -Aufruf die gespeicherte Prozedur aufrufen. Das scheint mir aber auch schlecht zu sein. Da ich sowieso die Logik für die Berechnung der Punkte in Java schreiben muss, warum sollte es dann wieder in SQL sein? Außerdem bin ich im Allgemeinen kein Fan der Aufteilung der Geschäftslogik in die verschiedenen Schichten.
Hat jemand das schon mal gemacht? Bitte helfen Sie.