使用JpaRepository缓存

时间:2014-11-10 06:09:23

标签: java spring hibernate

您好我以下列方式扩展了JpaRepository接口。

public interface StudentRepository extends JpaRepository<Student,Integer>
{
@Query(value= "SELECT s.id FROM student as s where s.createdat >  ADDDATE(CURRENT_DATE, :maxage ", nativeQuery = true )
public List<Integer> findWaitingStudentIds(@Param("maxage")int maxAge);
}

这是Entity类。

@Entity(name="student ")
public class Student implements Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(unique=true, nullable=false)
    private Integer  id;
    @Temporal(TemporalType.TIMESTAMP)
    @Column(updatable = false,insertable = false)
    private Date createdat;  
}

我想为&#34; List findWaitingStudentIds&#34;添加缓存方法。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:4)

我可以从StackOverflow问题中复制粘贴我的答案:

How should I implement a cache object/system in Spring?

  

Spring在3.x RELEASE中引入了Cache的抽象。你可以阅读   关于它的官方Spring文档(该网站今天已关闭   某种原因:)),或者在这篇文章中。例如。

     

http://java.dzone.com/articles/spring-cache-abstraction-0

     

通过这种抽象,您需要做的就是添加缓存   您的服务的一些注释,如

     

为缓存添加值

@Cacheable("customers")
public Customer findCustomer(long customerId) {...}
     

删除缓存中的值

@CacheEvict(value="customer", allEntries = true)
public void removeAllCustomers(long customerId) {...}

答案 1 :(得分:1)

您可以考虑阅读Hibernate Reference Manual。当我第一次使用它时,它帮助了我很多。它确实澄清了概念及其运作方式。

StackOverflow中还有其他一些答案:Hibernate Cache Reference

网上还提供了几个快速教程:

我希望这个信息可以帮助你。