Drastiska skillnader kan du förvänta dig om du cachelagrar det som är bra att cachelagras och undviker cachning av data som inte ska cachelagras alls. Som att skönhet är i betraktarens öga, samma sak är med föreställningen. Här är flera aspekter du bör ha i åtanke när du använder hibernate AS andra nivås cache-leverantör:
Ingen anpassad serialisering – minneskrävande
Om du använder andra nivås cachning, skulle du inte kunna använda snabba serialiseringsramverk som Kryo och kommer att behöva hålla dig till java serialiserbar vilket suger.
Utöver detta för varje enhetstyp kommer du att ha en separat region och inom varje region kommer du att ha en post för varje nyckel för varje enhet. När det gäller minneseffektivitet är detta ineffektivt.
Saknar förmågan att lagra och distribuera rika objekt
De flesta av de moderna cacharna har också datorrutnätsfunktioner där dina objekt är fragmenterade i många små bitar minskar din förmåga att utföra distribuerade uppgifter med garanterad datasamlokalisering. Det beror lite på nätleverantören, men för många skulle det vara en begränsning.
Suboptimal prestanda
Beroende på hur mycket prestanda du behöver och vilken typ av applikation du använder kan det vara ett bra eller ett dåligt val med viloläge på andra nivån. Bra i termer av att det är plug and play...." typ..." dåligt eftersom du aldrig kommer att klämma den prestation du skulle ha fått. Att designa rika modeller innebär också mer arbete i förväg och mer OOP.
Begränsade frågemöjligheter PÅ själva cachen
Det beror på cache-leverantören, men vissa av leverantörerna är verkligen inte bra på att göra JOINs med Where-klausul som skiljer sig från ID. Om du försöker bygga och in minnesindex för en fråga på Hazelcast, till exempel, kommer du att se vad jag menar.