JpaSpecificationExecutor: 比较特殊,不属于Repository体系,实现一组JPA Criteria查询相关的方法
不需要写任何实现类,Spring Data Jpa框架帮你搞定这一切。
Spring Configuration
1 < beans >
2 < bean id = " entityManagerFactory "
class = "org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean " >
3 < property name = " dataSource " ref = " dataSource " />
4 < property name = " jpaVendorAdapter " >
5 < bean
class = " org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter " >
6 < property name = " generateDdl " value = " true " />
7 < property name = " database " value = " HSQL " />
8 </ bean >
9 </ property >
10 < property name = " persistenceUnitName " value = " jpa.sample " />
11 </ bean >
12 13 < bean id = " transactionManager "
class = " org.springframework.orm.jpa.JpaTransactionManager " >
14 < property name = " entityManagerFactory " ref = " entityManagerFactory " />
15 </ bean >
16 17 < jdbc:embedded - database id = " dataSource " type = " HSQL " />
18 19 20 < jpa:repositories base -
package = " org.springframework.data.jpa.example.repository.simple " />
21 </ beans>
核心代码只要配置一行:<jpa:repositories base-package="org.springframework.data.jpa.example.repository.simple" />即可。上面的仅仅是数据源,事务的配置而已。
至此,大功告成,即可运行
1 /**
2 * Intergration test showing the basic usage of { @link SimpleUserRepository}.
3 *
4 * @author <a href="mailto:li.jinl@alibaba-inc.com">Stone.J</a> Aug 25, 2011
5 */ 6 @RunWith(SpringJUnit4ClassRunner.
class )
7 @ContextConfiguration(locations = " classpath:simple-repository-context.xml " )
8 @Transactional
9 public class SimpleUserRepositorySample {
10 11 @Autowired
12 SimpleUserRepository repository;
13 User user;
14 15 @Before
16 public void setUp() {
17 user =
new User();
18 user.setUsername( " foobar " );
19 user.setFirstname( " firstname " );
20 user.setLastname( " lastname " );
21 }
22 23 // crud方法测试
24 @Test
25 public void testCrud() {
26 user = repository.save(user);
27 assertEquals(user, repository.findOne(user.getId()));
28 }
29 30 // method query测试
31 @Test
32 public void testMethodQuery()
throws Exception {
33 user = repository.save(user);
34 List < User > users = repository.findByLastname( " lastname " );
35 assertNotNull(users);
36 assertTrue(users.contains(user));
37 }
38 39 // named query测试
40 @Test
41 public void testNamedQuery()
throws Exception {
42 user = repository.save(user);
43 List < User > users = repository.findByFirstnameOrLastname( " lastname " );
44 assertTrue(users.contains(user));
45 }
46 47 // criteria query测试
48 @Test
49 public void testCriteriaQuery()
throws Exception {
50 user = repository.save(user);
51 List < User > users = repository.findAll(
new Specification < User > () {
52 53 @Override
54 public Predicate toPredicate(Root < User > root, CriteriaQuery <?> query, CriteriaBuilder cb) {
55 return cb.equal(root.get( " lastname " ), " lastname " );
56 }
57 });
58 assertTrue(users.contains(user));
59 }
60
其中,写操作相对比较简单,我不做详细介绍,针对读操作,我稍微描述下:
Method Query: 方法级别的查询,针对
findBy
, find
, readBy
, read
, getBy等前缀的方法,解析方法字符串,生成查询语句,其中支持的关键词有:
Named Query: 针对一些复杂的SQL,支持原生SQL方式,进行查询,保证性能
Criteria Query: 支持JPA标准中的Criteria Query
相关推荐
**Spring Data JPA** 是一个基于 **Java** 的开源框架,它是 **Spring Framework** 的一个模块,主要用于简化 **Java Persistence API (JPA)** 的使用。JPA 是 Java 平台上的一个标准,用于管理和持久化应用程序的...
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
至于压缩包中的“helloworld”文件,可能是一个简单的示例项目,通常会包含一个基础的Spring Data JPA配置,一个实体类,以及对应的Repository接口,用于展示Spring Data JPA的基本用法。通过查看这个例子,你可以更...
Spring框架的核心特性包括依赖注入(DI)和面向切面编程(AOP),并且它还提供了对数据库操作的支持,这主要通过Spring Data JPA和Java Persistence API(JPA)实现。 Spring注解是Spring框架中的一大特色,它极大...
《Spring Data JPA从入门到精通》是一本深入解析Spring Data JPA的书籍,它以Spring Boot框架为核心,旨在帮助读者全面理解并熟练运用Spring Data JPA进行数据库操作。Spring Data JPA是Spring Framework的一个模块...
**Spring Data JPA 简单案例** Spring Data JPA 是 Spring 框架的一个模块,它为使用 JPA(Java Persistence API)提供了强大的支持,简化了数据访问层的开发。通过使用 Spring Data JPA,我们可以避免编写大量重复...
Spring Data JPA是Spring生态中的一个强大ORM框架,它极大地提高了Java开发者在处理数据库操作时的效率。Spring Data JPA的主要优点在于其高度的开发效率、成熟的语法结构以及与Spring框架的紧密集成。 1. **开发...
本教程将详细介绍 Spring Data JPA 的核心概念与使用方法,帮助开发者从基础入门到实现复杂查询的完整过程。 第一章:Spring Data JPA 入门 Spring Data JPA 简化了 JPA(Java Persistence API)的开发,通过约定...
- **强大的查询支持**:除了简单的 CRUD 方法,Spring Data JPA 还支持基于方法名的复杂查询,甚至可以使用 JPA Querydsl 或 Specification 进行更复杂的查询。 - **事务管理**:Spring Data JPA 结合 Spring 的事务...
在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...
Spring Data JPA 是一个强大的框架,它简化了与Java Persistence API (JPA) 的交互,JPA 是Java 开发者用来管理和持久化应用程序数据的一种标准。在这个“Spring Data JPA Demo”项目中,我们将深入探讨如何利用...
Spring Data JPA是Java开发中的一个关键框架,它简化了与关系型数据库的交互,特别是基于Java Persistence API (JPA)。这个框架是Spring生态系统的组成部分,为开发者提供了声明式数据访问的方式,允许通过简单的...
通过上面的介绍,我们了解到SpringDataJPA不但提高了代码的复用性,还降低了ORM框架切换的成本。如果项目需要更换底层的数据持久化框架,只需要更换相应的JPA实现即可,而应用程序代码则几乎不需要改动。这样的特性...
在Spring Boot框架中,Spring Data JPA的集成变得更加简单。Spring Boot通过自动配置,可以快速启动一个JPA应用,只需少量甚至无需配置。同时,Spring Boot还支持数据源的自动配置,使得开发者可以快速连接到数据库...
【描述】中的"简单的springMVC入门程序配置Spring data jpa亲测可完美运行"说明这是一个基于Spring MVC的项目,Spring MVC是Spring框架的一部分,用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构模式的...
**SpringBoot整合SpringData JPA** 是一个现代Java开发中的常见技术栈,它结合了Spring Boot的便捷性和Spring Data JPA的数据访问效率。Spring Boot简化了应用的初始搭建以及配置,而Spring Data JPA则是Spring ...
Spring Data JPA是Spring框架的一个模块,主要目的是简化Java企业级应用中数据访问层的开发。这个框架构建在JPA(Java Persistence API)之上,提供了一种声明式的方式来操作数据库,使得开发者无需编写大量的SQL...
Spring Data JPA是Spring生态系统中的一个重要组件,它为开发者提供了与JPA(Java Persistence API)交互的简化接口,极大地提高了数据访问的效率。本教程将深入探讨如何在Spring Boot项目中整合Spring Data JPA,...