Search code examples
javaspringcachingehcachespring-3

Retrieve caching list In Spring


I am using Spring3.1 in standalone Env.

I am trying to cache my entries. So in 3.1 I can use @Cacheable this way:

@Cacheable("client")
@Override
public ClientDTO getClientByLogin(String login) throws FixException
{
    ClientDTO client = null;
    try
    {
        client = (ClientDTO) jdbcTemplate.queryForObject(GET_CLIENT_BY_LOGIN_STATEMENT, new Object[]
        { login }, new ClientDTO());
    }
    catch (EmptyResultDataAccessException e)
    {
        log.error("Client login not exist in database. login=" + login);
    }

    if (client == null)
    {
        throw new FixException("Return null from DB when executing getClientByLogin(), login=" + login);
    }
    return client;
}

now each time i invoke getClient it will look first in it's cache respositry.

If I want to retrieve the caching list in order to iterate on it. How i do it?

thanks.


Solution

  • I found a solution:

    private ClientDTO getClientDTOByClientId(Integer clientId)
    {
        ClientDTO clientDTO = null;
        Cache clientCache = null;
        try
        {
            clientCache = ehCacheCacheManager.getCache("client");
            clientDTO = null;
            if (clientCache != null)
            {
                clientDTO = (ClientDTO) clientCache.get(clientId);
            }
            else
            {
                log.error("clientCache is null");
            }
        }
        catch (Exception e)
        {
            log.error("Couldnt retrieve client from cache. clientId=" + clientId);
        }
        return clientDTO;
    }