spring data jpa是什么?

spring data jpa是什么?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jewelry008/article/details/76359516

Spring Data JPA能干什么

 

在开始之前,先举个简单的例子.

    一张表user有三个字段,id、name和age,要查找指定姓氏在某年龄以上的user,在传统的spring+hibernate中,dao层我们是这样写的:

    UserDao:

 

[java] view plain copy

  1. <code class="language-java">public interface UserDao{  
  2.     List<User> findByNameLikeAndAgeGreaterThan(String firstName,Integer age);  
  3. }</code>  



    UserDaoImpl(已经是相对简单的HibernateTemplate方式了):

 
  1. public class UserDaoImpl implements UserDao{

  2. @Override

  3. public List<User> findByFirstNameAndAge(String firstName, Integer age) {

  4. //具体hql查找:"from User where name like '%'"+firstName + "and age > " + age;

  5. return hibernateTemplateMysql.execute(new HibernateCallback() {

  6. @Override

  7. public Object doInHibernate(Session session) throws HibernateException {

  8. String hql = "from User where name like '?' and age > ?";

  9. Query query = session.createQuery(hql);

  10. query.setParameter(0, firstName+"");

  11. query.setParameter(1, age);

  12. return query.uniqueResult();

  13. }

  14. });

  15. }

  16. }

    然而,如果我们用Spring Data JPA呢:

 

[java] view plain copy

  1. <code class="language-java">public interface UserDao extends JpaRepository<User, Serializable>{  
  2.     List<User> findByNameLikeAndAgeGreaterThan(String firstName,Integer age);  
  3. }</code>  

 

 

    对,就这样,已经没有了,连实现都不需要写的!service直接调用UserDao.findByNameLikeAndAgeGreaterThan(firstName+"%",age)即可。

 

所以,spring data jpa可以极大的简化JPA的写法,可以在几乎不用写具体代码的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。

 

 

Spring Data JPA有什么

主要来看看Spring Data JPA提供的接口,也是Spring Data JPA的核心概念:

1:Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别。

2:CrudRepository :是Repository的子接口,提供CRUD的功能

3:PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能

4:JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。

5:JpaSpecificationExecutor:用来做负责查询的接口

6:Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/328673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LINQ:进阶 - LINQ 标准查询操作概述

“标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法。大多数这些方法都在序列上运行&#xff0c;其中的序列是一个对象&#xff0c;其类型实现了IEnumerable<T> 接口或 IQueryable<T> 接口。标准查询运算符提供了包括筛选、投影、聚合、排序等功能在内的查询…

2020年日历电子版(打印版)_“温故知新”——2020年《故宫日历》(青少版)正式发布...

2020《故宫日历》(青少版)。供图2020《故宫日历》(青少版)。供图中新网北京10月28日电 (记者 冉文娟)由故宫出版社和新东方教育科技集团联合推出的2020年《故宫日历》(青少版)28日在故宫博物院正式发布。《故宫日历》是故宫博物院介绍故宫藏品、传播故宫文化的普及读物。此次故…

BufferedImage与byte[]互转

转载自 BufferedImage与byte[]互转一、需要用到的类java.awt.image.BufferedImage; javax.imageio.ImageIO; java.io.*;二、为什么要将BufferedImage转为byte数组在传输中&#xff0c;图片是不能直接传的&#xff0c;因此需要把图片变为字节数组&#xff0c;然后传输比较方便…

2016经典微小说:《轮回》

内容来源于&#xff1a;网络 多年前&#xff0c;每到清晨&#xff0c;她要送他去幼儿园前。他总是哭着对她恳求&#xff1a;“妈妈&#xff0c;我在家听话&#xff0c;我不惹你生气&#xff0c;求你别送我去幼儿园&#xff0c;我想和你在一起。” 急匆匆忙着要上班的她&#xf…

delphi dll是否可用var参数_时间序列之向量自回归(VAR)学习重点

综合整理自&#xff1a;百度文库等向量自回归介绍&#xff1a;当我们对变量是否真是外生变量的情况不自信时&#xff0c;传递函数分析的自然扩展就是均等地对待每一个变量。在双变量情况下&#xff0c;我们可以令{yt}的时间路径受序列{zt}的当期或过去的实际值的影响&#xff0…

关于TCP/IP必须知道的几个基础问题

转载自 关于TCP/IP必须知道的几个基础问题描述一下TCP三次握手的过程 接下来我们根据下面这幅图来解释一下TCP三次握手。p.s: 每个箭头代表一次握手。第一次握手 client(客户端)发送一个SYN(seqx)包给server(服务器)&#xff0c;然后“期待”server的ACK回复。p.s: seq为sequ…

升讯威微信营销系统开发实践:(3)中控服务器的设计 .Net 还是 Java?

在上一篇文章中&#xff0c;简要介绍了升讯威微信营销系统的功能设计和架构设计&#xff0c;限于篇幅只能抛砖引玉&#xff0c;从本章节开始将围绕功能的设计和架构的设计进行详细的论述。 中控服务器的设计 在上文中&#xff0c;我们谈到需要一个中控服务器&#xff0c;用来维…

Java 虚拟机部分面试题

https://www.imooc.com/article/31018?block_idtuijian_wz https://www.imooc.com/article/31018?block_idtuijian_wz https://github.com/Snailclimb/Java_Guide https://github.com/Snailclimb/Java_Guide

linux 提取cpio_15. Linux提取RPM包文件(cpio命令)详解

在讲解如何从 RPM 包中提取文件之前&#xff0c;先来系统学习一下 cpio 命令。cpio 命令用于从归档包中存入和读取文件&#xff0c;换句话说&#xff0c;cpio 命令可以从归档包中提取文件(或目录)&#xff0c;也可以将文件(或目录)复制到归档包中。归档包&#xff0c;也可称为文…

升讯威微信营销系统开发实践:(2)功能设计与架构设计

在上一篇中&#xff0c;我们详细分析了微信订阅号和服务号的区别&#xff0c;在本篇中&#xff0c;将进入正题&#xff1a;升讯威微信营销系统的功能设计及架构设计。 一、功能设计 1&#xff09;设计目标 ◇ 为微信服务号提供运营及管理所需的各种功能&#xff0c;包括微官网、…

解读分库分表中间件Sharding-JDBC

转载自 解读分库分表中间件Sharding-JDBC编者按】数据库分库分表从互联网时代开启至今&#xff0c;一直是热门话题。在NoSQL横行的今天&#xff0c;关系型数据库凭借其稳定、查询灵活、兼容等特性&#xff0c;仍被大多数公司作为首选数据库。因此&#xff0c;合理采用分库分表…

java面试设计模式

https://blog.csdn.net/yinyuehepijiu/article/details/38663843

新闻发布项目——实体类(User)

package bdqn.newsMange.entity; /*** User的实体类* author Administrator**/ public class User {private int userId;//编号private String userName;//用户名private String userPassword;//密码private String uRole;//角色public int getUserId() {return userId;}public…

js webpack 配置路径_webpack中如何设置html引入js的路径

如题所示,如果webpack这样配置var htmlWebpackPlugin require(html-webpack-plugin);const CleanWebpackPlugin require(clean-webpack-plugin);let pathsToClean [dist,];module.exports {entry: ./src/app.js,output: {path: __dirname /dist,filename: main.[chunkhash…

HTTP 报文结构

https://www.jianshu.com/p/a2c4ede32d11

Java魔法堂:URI、URL(含URL Protocol Handler)和URN

转载自 Java魔法堂&#xff1a;URI、URL&#xff08;含URL Protocol Handler&#xff09;和URN一、前言                              过去一直搞不清什么是URI什么是URL&#xff0c;现在是时候好好弄清楚它们了&#xff01;本文作为学习笔记…

升讯威微信营销系统开发教程:(1)订阅号和服务号深入分析

微信开发系列教程&#xff0c;将以一个实际的微信平台项目为案例&#xff0c;深入浅出的讲解微信开发、应用各环节的实现方案和技术细节。 原创内容&#xff0c;欢迎转载&#xff0c;转载请注明出处。 首先在第1章节中&#xff0c;我们先理清什么是订阅号&#xff0c;什么又是服…

不安装cudnn可不可以_Linux非root用户如何优雅的安装cuda和cudnn

Linux非root用户如何优雅的安装cuda和cudnn发布时间&#xff1a;2018-05-23 16:11,浏览次数&#xff1a;804, 标签&#xff1a;LinuxrootcudacudnnLinux非root用户如何优雅的安装cuda和cudnn跑深度学习模型时&#xff0c;总会遇到各种版本的问题。如深度学习框架与cuda的版本不…

如果你也会C#,那不妨了解下F#(4):了解函数及常用函数

函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算。虽然我们不需要深入了解数学函数的知识&#xff0c;但应该清楚函数式编程的基础是来自于数学。 例如数学函数f(x) x^2x&#xff0c;并没有指定返回值的类型&#xff0c;在数学函数中并不需要关心数值类型和返…

新闻发布项目——实体类(newsTb)

package bdqn.newsMange.entity;import java.util.Date;/*** 新闻的实体类* author Administrator**/ public class newsTb {private int newsID;// 编号private int categoryID;//类别编号(外键)private String summary;// 摘要private String title;//题目private String con…