Drastiske forskelle, du kan forvente, hvis du cacher, hvad der er godt at cache og undgå caching af data, som slet ikke bør cachelagres. Ligesom skønhed er i beskuerens øje, er det det samme med forestillingen. Her er flere aspekter, du bør have i tankerne, når du bruger hibernate AS cache-udbyder på andet niveau:
Ingen tilpasset serialisering – Hukommelseskrævende
Hvis du bruger caching på andet niveau, ville du ikke være i stand til at bruge hurtige serialiseringsrammer såsom Kryo, og du bliver nødt til at holde dig til java serialiserbar, hvilket stinker.
Oven i dette vil du for hver enhedstype have en separat region, og inden for hver region vil du have en indgang for hver nøgle for hver enhed. Med hensyn til hukommelseseffektivitet er dette ineffektivt.
Mangler evnen til at gemme og distribuere rige objekter
De fleste af de moderne caches præsenterer også computergitterfunktionalitet, hvor dine objekter er fragmenteret i mange små stykker, mindsker din evne til at udføre distribuerede opgaver med garanteret datasamplacering. Det afhænger lidt af netudbyderen, men for mange ville det være en begrænsning.
Suboptimal ydeevne
Afhængigt af hvor meget ydeevne du har brug for, og hvilken type applikation du har, kan det være et godt eller et dårligt valg ved at bruge dvale på andet niveaus cache. Godt i forhold til, at det er plug and play...." slags..." dårligt, fordi du aldrig vil presse den præstation, du ville have opnået. Også design af omfattende modeller betyder mere forhåndsarbejde og mere OOP.
Begrænsede forespørgselsmuligheder PÅ selve cachen
Det afhænger af cache-udbyderen, men nogle af udbyderne er virkelig ikke gode til at lave JOINs med Where-klausulen anderledes end ID'et. Hvis du forsøger at bygge og indlæse hukommelsesindeks for en forespørgsel på Hazelcast, for eksempel, vil du se, hvad jeg mener.