Moreover the cache that we would be maintaining is not a static cache and data will be added and deleted in it very frequently.
How do you avoid your database and cache diverging fairly significantly quite quickly? If the cache is you primary point of data access, should you not abandon the DB altogether and use a caching implementation that has a secondary disk cache? There are loads: EHCache, JCS, OSCache, Terracotta etc.