Wenn Zustand in der Sitzung zu speichern, sein wichtigen Gedanken Szenarien zu geben, wo ein Benutzer innerhalb der gleichen Sitzung die gleichen Ansicht in mehr Browsern-Tabs geöffnet und macht mit unterschiedlichen Kontexten der Ansicht, zB verschiedene Suchparameter für Ihren Fall.
Eine Option könnte die Verwendung einer GUID oder einer Pseudozufallskennung sein, unter der Sie die Liste in der Sitzung speichern. Dies würde ermöglichen, dass dieselbe Aktion, die von verschiedenen Browser-Registerkarten gerendert wird, die unterschiedlichen Ergebnisse mit unterschiedlichen Kennungen speichert. In der gerenderten Ergebnisansicht muss nur der Bezeichner gespeichert werden, und Sie müssen diesen angeben, wenn die entsprechende Schaltfläche ausgewählt wurde.
Die Sorge hier ist, wie die Sitzung zu bereinigen, aka wann wissen wir, wenn diese Liste der Ergebnisse nicht mehr benötigt wird? Es ist nicht einfach zu bestimmen. Abhängig von der Anzahl der Ergebnisse pro einmaligem Abruf ist es unklug, große Listen innerhalb einer HTTP-Sitzung zu platzieren. Idealerweise möchten Sie solche Sitzungen so schlank wie möglich halten.
Sollten Sie ein ORM-Framework verwenden, würde ich Ihnen empfehlen, die Verwendung von L2-Caches in Betracht zu ziehen. Anstatt zu versuchen, den Ergebnisspeicher auf die HTTP-Sitzung zu schärfen, bietet der L2-Cache eine Möglichkeit zum Zwischenspeichern von Abfrageergebnissen. Der Vorteil hier ist, dass wenn verschiedene Sitzungen die gleiche Abfrage ausführen, sie einander profitieren.
Wenn Sie den L2-Cache verwenden, müssen Sie sich nicht mehr um die Sitzung des Benutzers kümmern. Die Methoden für den Export und die Suche wären nahezu identisch. Sie würden beide die Abfrage ausführen, aber die Idee ist, dass die Ergebnisse von der Anzeige immer noch im L2-Cache wären, daher würde der Aufruf, sie zu exportieren, aus dem Cache gezogen werden.
Auch wenn Sie kein ORM verwenden, können Sie die Verwendung von ehcache direkt nutzen, die mit einer bestimmten Abfrage verknüpften Ergebnisse verwalten und den Cache vor der Datenbank abfragen.
Was meinst du * Session zwei verschiedene Methoden verwenden *? Sind diese Methoden den Aktionen zugeordnet? –
Ya. diese Methoden sind verschiedenen Aktionen zugeordnet –
Es ist unklar, was Sie fragen. Wenn Sie eine Sammlung in der Sitzung aufbewahren möchten, fügen Sie sie in die Sitzung ein, wobei der Vorbehalt besteht, dass ginormous Datenblobs in der Sitzung Auswirkungen haben können. –