Pure JPA

Spring Data JPA设计模式

public interface UserRepository extends JpaRepository<User,Long>{
}

这就是UserRepository不用写任何方法的原因。Spring Data JPA主要通过方法签名来为UserRepository实现功能。

使用这种途径可以使用的方式包括@Query和通过遵循Spring Data JPA的方法签名约定来写查询。

public interface UserRepository extends JpaRepository<User,Long>{
      //遵循Spring Data Jpa 方法签名约定:查询动词+主题+关键词+断言
      User findByUsername(String username);
      //通过使用@Query,仅可以单条JPA查询
      @Query("select u from User u  where u.username='oneslide'")
      User findUsernamexxx();
}

Mixed JPA

Spring Data JPA设计模式
标注黄色的类是Spring Data Jpa自动生成的,容器持有的UserRepository引用实际上是MixedUserRepository

UserRepositoryImpl通过名称和UserRepository相关联,实现复杂操作,这个操作就像不使用Spring Data JPA那样,获取EntityManager等。

相关文章: