Ho già molti dati esistenti nel mio database e voglio sviluppare un meccanismo a punti che calcoli un punteggio per ciascun utente in base a quali azioni eseguono.Progettazione di un sistema a punti in primavera
Sto implementando questa funzionalità in modo collegabile, in modo che sia indipendente dalla logica principale e si basa su eventi Spring inviati, una volta che un'entità viene modificata.
Il problema è cosa fare con i dati esistenti. Non voglio iniziare a raccogliere punti da ora, ma piuttosto includere tutti i dati fino ad ora.
Qual è il modo più pratico per farlo? Devo progettare i miei plugin in modo tale da fornire un metodo index(), che costringerà il mio sistema a recuperare ogni singola entità dal database, a inviare un EntityDirtyEvent, a sparare i plugin dei punti, per ognuno, e quindi ad aggiornare per lasciare che i punti vengano salvati accanto a ciascuna entità. Ciò potrebbe comportare un sacco di spese generali, giusto?
La cosa più semplice sarebbe quella di creare una stored procedure complessa e quindi fare in modo che index() chiami quella stored procedure. Tuttavia, anche a me sembra una cosa brutta. Dal momento che dovrò scrivere la logica per calcolare i punti in java comunque, perché averlo ancora una volta in SQL? Inoltre, in generale, non sono un fan della suddivisione della logica di business nei diversi livelli.
Qualcuno ha già fatto questo? Per favore aiuto.