Spring JPA

以前不了解, 现在做个笔记

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);

参考:

/https://zhuanlan.zhihu.com/p/624207419


Comments

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注