Ik heb al redelijk veel geëxperimenteerd met lazy loading en ik heb het gevoel dat is wel redelijk weet hoe het goed toe te passen. Nu wil ik naar de volgende stap en dat is lazy loading binnen een collectie die paging moet ondersteunen.
Stel dat ik een lijst van 10.000 producten heb, welke gesorteerd zijn op naam, dan wil ik ervoor zorgen dat ik ze in stappen van 50 per keer kan laden, waarbij ik kan aangeven welke 'page' ik wil hebben. Page 1 is dan product 1 tot en met 50, page 2 is 51 tot en met 100 enz.
Dat is op zich geen probleem. Waar ik alleen moeite mee heb is het aangegeven waarop gesorteerd moet worden. Ik heb bijvoorbeeld een lazy loading collectie class, die ik bij het instantiëren een loader object meegeef, die er voor zorgt dat de objecten geladen worden. Het is dan taak van de collectie class zelf om de al geladen objecten te cachen, zodat dit niet dubbel gebeurt.
Maar wat als de sorteringscriteria nu eens veranderen? Stel ik wil de producten op prijs sorteren en ik heb al enkele pages op naam uit de collectie gehaald. Invalidate je dan gewoon je complete cache en begin je opnieuw met laden? Ik zie geen andere oplossing. Ik zou dan het loader object moeten laten controleren van de criteria waarop gesorteerd wordt gewijzigd zijn en dan eventueel de cache laten weggooien, omdat deze niet meer klopt.
Of vind je dat het paging gedeelte geen goede taak voor een collectie class is met lazy loading en implementeer je dit op een andere manier? Het in 1 keer inladen van 10.000 producten zie ik niet zo zitten, dus het inladen met pages wil ik wel zo houden.
Hopelijk heeft iemand hier wat zinnigs over te zeggen, ik ben er wel benieuwd naar.
Stel dat ik een lijst van 10.000 producten heb, welke gesorteerd zijn op naam, dan wil ik ervoor zorgen dat ik ze in stappen van 50 per keer kan laden, waarbij ik kan aangeven welke 'page' ik wil hebben. Page 1 is dan product 1 tot en met 50, page 2 is 51 tot en met 100 enz.
Dat is op zich geen probleem. Waar ik alleen moeite mee heb is het aangegeven waarop gesorteerd moet worden. Ik heb bijvoorbeeld een lazy loading collectie class, die ik bij het instantiëren een loader object meegeef, die er voor zorgt dat de objecten geladen worden. Het is dan taak van de collectie class zelf om de al geladen objecten te cachen, zodat dit niet dubbel gebeurt.
Maar wat als de sorteringscriteria nu eens veranderen? Stel ik wil de producten op prijs sorteren en ik heb al enkele pages op naam uit de collectie gehaald. Invalidate je dan gewoon je complete cache en begin je opnieuw met laden? Ik zie geen andere oplossing. Ik zou dan het loader object moeten laten controleren van de criteria waarop gesorteerd wordt gewijzigd zijn en dan eventueel de cache laten weggooien, omdat deze niet meer klopt.
Of vind je dat het paging gedeelte geen goede taak voor een collectie class is met lazy loading en implementeer je dit op een andere manier? Het in 1 keer inladen van 10.000 producten zie ik niet zo zitten, dus het inladen met pages wil ik wel zo houden.
Hopelijk heeft iemand hier wat zinnigs over te zeggen, ik ben er wel benieuwd naar.