package org.infinispan.spring.provider.sample.service;
import javax.cache.annotation.CacheKey;
import javax.cache.annotation.CachePut;
import javax.cache.annotation.CacheRemove;
import javax.cache.annotation.CacheRemoveAll;
import javax.cache.annotation.CacheResult;
import javax.cache.annotation.CacheValue;
import org.infinispan.spring.provider.sample.dao.BaseBookDao;
import org.infinispan.spring.provider.sample.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author Matej Cimbora (mcimbora@redhat.com)
*/
@Transactional
@Service
public class CachedBookServiceJsr107Impl implements CachedBookServiceJsr107 {
@Autowired
private BaseBookDao baseDao;
@CacheResult(cacheName = "books")
@Override
public Book findBook(Integer bookId) {
return baseDao.findBook(bookId);
}
@CacheRemove(cacheName = "books")
@Override
public void deleteBook(Integer bookId) {
baseDao.deleteBook(bookId);
}
@CacheRemove(cacheName = "books")
@Override
public Book updateBook(Book book) {
return baseDao.updateBook(book);
}
@CachePut(cacheName = "books")
@Override
public Book createBook(@CacheKey @CacheValue Book book) {
return baseDao.createBook(book);
}
@CacheRemoveAll(cacheName = "books")
@Override
public void deleteBookAllEntries(Integer bookId) {
baseDao.deleteBook(bookId);
}
}