以前不了解, 现在做个笔记
Spring Data JPA 是 Spring Data 项目的一部分。可以快速完成增删改查。
使用
直接继承 JpaRepostory就可以调用增删改查方法了;另外也可以通过@Query注解自定义。
public interface UserRepository extends Repository<User, Long> {
// 根据用户名查询用户
@Query("SELECT u FROM User u WHERE u.userName = :userName")
User findByUserName(@Param("userName") String userName);
// 根据用户名和密码查询用户
@Query("SELECT u FROM User u WHERE u.userName = :userName AND u.password = :password")
User findByUserNameAndPassword(@Param("userName") String userName, @Param("password") String password);
}
写一个builder参数,生成sql也支持。
public interface UserRepository extends JpaRepository<User, Long>, JpaSpecificationExecutor<User> {
List<User> findAll(Specification<User> spec);
}
// 使用
Specification<User> spec = (root, query, criteriaBuilder) -> criteriaBuilder.greaterThanOrEqualTo(root.get("age"), 18);
userRepostory.findAll(spec);
Hibernate?
是的,Hibernate 是基于 JPA规范的 ORM框架。
hibernate缓存
一级缓存: session级缓存, 默认就开启的, 应该是一次事务里面的意思;
可以这样子显式刷新一级缓存:
session.flush();
二级缓存, sessionFactory缓存,默认不开启的,适合读多写少的情况(配置、字典表等)
清二级缓存:
//清整个二级缓存
sessionFactory.getCache().evictAll();
//清特定实体类的二级缓存
sessionFactory.evict(Class<?> entityClass);
参考:
发表回复