ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring Data JPA

2021-06-07 23:33:35  阅读:174  来源: 互联网

标签:JPA Spring 接口 查询 jpql Data


1. Spring Data JPA概述
Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作。
它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!

Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现, 推荐使用Spring Data JPA + ORM(如:hibernate)完成操作,
这样在切换不同的ORM框架时提供了极大的方便,同时也使数据库层操作更加简单,方便解耦


2. Spring Data JPA的特性
SpringData Jpa 极大简化了数据库访问层代码。 如何简化的呢? 使用了SpringDataJpa,我们的dao层中只需要写接口,就自动具有了增删改查、分页查询等方法。


3. Spring Data JPA 与 JPA和hibernate之间的关系
JPA是一套规范,内部是有接口和抽象类组成的。hibernate是一套成熟的ORM框架,而且Hibernate实现了JPA规范,所以也可以称hibernate为JPA的一种实现方式
我们使用JPA的API编程,意味着站在更高的角度上看待问题(面向接口编程)

Spring Data JPA是Spring提供的一套对JPA操作更加高级的封装,是在JPA规范下的专门用来进行数据持久化的解决方案。

Spring Data JPA的简单使用

https://gitee.com/code-gzy/spring-data-jpa-demo.git

查询方式

**dao接口需继承JpaRepository,和JpaSpecificationExecutor接口后,我们就可以使用接口中定义的方法进行查询**

        1. 借助接口中的定义好的方法完成查询
		findOne(id):根据id查询
	2.jpql的查询方式
		jpql : jpa query language  (jpq查询语言)
		特点:语法或关键字和sql语句类似
			查询的是类和类中的属性
			
		* 需要将JPQL语句配置到接口方法上
			1.特有的查询:需要在dao接口上配置方法
			2.在新添加的方法上,使用注解的形式配置jpql查询语句
			3.注解 : @Query

	3.sql语句的查询
			1.特有的查询:需要在dao接口上配置方法
			2.在新添加的方法上,使用注解的形式配置sql查询语句
			3.注解 : @Query
				value :jpql语句 | sql语句
				nativeQuery :false(使用jpql查询) | true(使用本地查询:sql查询)
					是否使用本地查询
					
	4.方法名称规则查询
		*是对jpql查询,更加深入一层的封装
		*我们只需要按照SpringDataJpa提供的方法名称规则定义方法,不需要再配置jpql语句,完成查询
		*
			findBy开头:	代表查询
				对象中属性名称(首字母大写)
			*含义:根据属性名称进行查询

方法名称规则查询

按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写。
框架在进行方法名解析时,会先把方法名多余的前缀截取掉,然后对剩下部分进行解析。

标签:JPA,Spring,接口,查询,jpql,Data
来源: https://www.cnblogs.com/codegzy/p/14860981.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有