使用JpaRepository缓存

use*_*815 3 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);
}
Run Code Online (Sandbox Code Playgroud)

这是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;  
}
Run Code Online (Sandbox Code Playgroud)

我想为“列表findWaitingStudentIds”方法添加缓存。我该如何实现?

mav*_*azy 5

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

我应该如何在Spring中实现一个缓存对象/系统?

Spring在3.x RELEASE中引入了Cache的抽象。您可以在Spring官方文档(由于某种原因该站点今天已关闭:)中,或在此文章中阅读有关此内容的信息。

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

通过这种抽象,启用缓存所需要做的就是在服务中添加一些注释,例如

为缓存增加价值

@Cacheable("customers")
public Customer findCustomer(long customerId) {...}
Run Code Online (Sandbox Code Playgroud)

删除缓存的值

@CacheEvict(value="customer", allEntries = true)
public void removeAllCustomers(long customerId) {...}
Run Code Online (Sandbox Code Playgroud)