本人是职场新手,想要通过写博客的形式为自己的学习做个记录,若有错误,请指正,谢谢!
添加操作:显示页面 & 使用 JPA 二级缓存
• 确定开发目标:
• Dao 层:
– 查询所有的 Department
– 且需要使用 JPA 的二级缓存 ?
• Service 层:调用 Dao 层的方法,获取所有的 Department,返回即可
• Controller 层:
– 调用 Service 层,获取所有的 Department,并放入到 request 中
– 创建一个新的 Employee 对象,放入到 request 中。且其键和表单的 modelAttribute 属性值一致。
– 转发页面
• JSP 页面:
– 需要使用 SpringMVC 的表单标签来显示表单页面
– 注意:form:form 标签必须设置一个 modelAttribute 属性,以从 request 中获取对应的 bean,要求该 bean 的属性和表单字段是一一对应的。
实现二级缓存:自己实现一个方法,调用@QueryHints({@QueryHint(name=org.hibernate.ejb.QueryHints.HINT_CACHEABLE,value="true")})即可实现
具体代码
public interface DepartmentRepository extends JpaRepository<Department, Integer>{
@QueryHints({@QueryHint(name=org.hibernate.ejb.QueryHints.HINT_CACHEABLE,value="true")})
@Query("FROM Department d")
List<Department> getAll();
}
@Test
public void testRepositorySecondLevelCache(){
List<Department> departments = departmentRepository.getAll();
departments = departmentRepository.getAll();
}
Hibernate:
select
department0_.id as id1_0_,
department0_.department_name as departme2_0_
from
sssp_departments department0_
若不实现二级缓存,则会出现两条SQL语句