Mam pomysł na użycie inceptora / AOP / proxy na wszystkie metody w ... no właśnie chyba założę go na wszystkie metody publiczne serwisów.
chce żeby ten inceptor cache będzie sobie zapisywał wywołania metod i z jakimi parametrami i cascheował na dysk wyniki tych wywołań
A wiesz jaki to będzie miało wpływ na wydajność ? za każdym wywołaniem metody i refleksja 0.0 + blokująca operacja I/O DD jak to ma latać na produkcji to wole nie wiedzieć co tam się aktualnie znajduje :D to musi być jakaś puszka pandory :D
a;e jak zrobić klucz na podstawie samej wywołanej metody to okey, ale jeszcze z parametrami to nwm za bardzo jak.
jak serializować gdy zwracane obiekty nie implementują serializable tez nwm :c ?
cache to może być < Query, Wynik>
- tak się cachuje wyniki HTTP na przykład. A wywołanie może mieć w kluczy np: wartość aktualnego requestu, chyba macie takie coś jak requestId ????
Jeżeli robisz to samodzielnie (niech Bóg ma Cie w swojej opiece) - to zgodnie z MVP - zrób to jak najniżej i najprościej - jakiś klient na którym wykonujesz query/execute- nadpisz entityManager (czy jak to sie nazywa w hajbernejcie - przecież i tak musisz zarządzać brakiem połączenia, chyba nie łapiesz wyjątku gdzieś na poziomie serwisu DDDD) - i zapisuj na początek query na wynik. Zobacz jak będzie działąć.
Dodatkowo, wgl, jakie zapisywanie na dysk ? to ma być cache ? cache to chyba jest po to żeby coś szybciej działało D:D a jak będziesz robić takie nieprzemyślane I/O to powodzenia, trzymaj to w pamięci, w jakieś istniejącej implementacji Cacha https://github.com/google/guava/wiki/CachesExplained
**WGL:
hystrix ma wszystko czego potrzebujesz - wywołujesz query jako call do zewnętrznej zależności, masz cachowanie - retry stategy (to co cchesz chyba, bo jak sie wywali to idziesz do cacha), masz circuit breaker(bo jak sie 5razy połączenia wywalą to po co marnować zasób na kolejne strzelanie, lepiej od razu następne requesty wysłać do cacha) https://github.com/Netflix/Hystrix - idealnie pasuje