Spring Cache Abstraction with multi-value queries

后端 未结 3 1081
我寻月下人不归
我寻月下人不归 2021-01-21 12:44

Does Spring Cache abstraction support multi-value queries?

Instead of:

@Cacheable(\"books\") public Book findBook(ISBN isbn) {...}

Imagine a query that g

相关标签:
3条回答
  • 2021-01-21 13:23

    The query cache can indeed cache a list of results per query input. Be aware thought, that only the IDs of the returned entities will be saved in the query cache. You have to have the entity cache enabled separately for the returned entity type itself, if you want the properties to be cached too.

    0 讨论(0)
  • 2021-01-21 13:24

    Spring Cache stores whole result under single cache key, so it is not possible to store individually each object returned in the collection. In case of caching result of a JPA Query you may use query cache. In other cases if memcached is an option for you, you can try Simple Spring Memcached and ReadThroughMultiCache annotation. It will store each element of the collection individually under dedicated cache key.

    0 讨论(0)
  • 2021-01-21 13:43

    Worked for me. Here's a link to my answer. https://stackoverflow.com/a/60992530/2891027

    TL:DR

    @Cacheable(cacheNames = "test", key = "#p0")
    public List<String> getTestFunction(List<String> someIds) {
    

    My example is with String and not custom object.

    Hope it helps at least a bit :)

    0 讨论(0)
提交回复
热议问题