spring data jpa 与 jpa的区别
spring data jpa 与 jpa的区别 - sinat_39789638的博客 - CSDN博客
https://blog.csdn.net/sinat_39789638/article/details/78045990
spring data jpa是spring公司下的spring data项目的一个模块。
spring data jpa定义了接口来进行持久层的编写规范,同时还大大简化了持久层的CRUD操作。
从此可以看出,spring data jpa与jpa之间并没有直接的关系。
jpa是由sun公司定义的持久层规范,但是jpa 并没有做任何简化,其中只有一堆接口。
而spring data jpa中不仅有接口,还有实现类,正是这些实现类实现了CRUD操作的简化,但是实现类并不做CRUD操作。
spring data jpa和jpa一样,虽然定义了持久层的编写规范,但是持久层的具体操作需要由第三方框架来做,它自己并不能做相应的CRUD操作。
简而言之,spring data jpa和jpa的区别:
1、spring data jpa由spring提供 jpa由sun公司提供
2、两者属于同一等级,都是持久层的规范,spring data jpa对CRUD操作做了简化
两者都可以管理任何第三方持久层框架。是同一级别的。
===========================================================================
===========================================================================
===========================================================================
简述 JPA 与 Spring Data JPA 与 Hibernate - kangkaii - 博客园
https://www.cnblogs.com/kangkaii/p/8458371.html
简述 JPA 与 Spring Data JPA 与 Hibernate
1.JPA是什么?以及相关概述
- JPA的是 Java Persistence API 的简写,是Sun官方提出的一种ORM规范!
- Sun提出此规范有2个原因:
1.简化现有Java EE和Java SE应用开发工作。
2.Sun希望整合ORM技术,实现天下归一。 - 重点在于,JPA是一套规范,而不是具体的ORM框架。
- 故Hibernate、TopLink 等ORM框架 都是JPA的实现,其中Hibernate已获得Sun的兼容认证。
- JPA的标准的定制是hibernate作者参与定制的,所以JPA是Hibernate的一个总成。
- 优势在于:
1.开发者面向JPA规范的接口,但底层的JPA实现可以任意切换:觉得Hibernate好的,可以选择Hibernate JPA实现;觉得TopLink好的,可以选择TopLink JPA实现。
2.这样开发者可以避免为使用Hibernate学习一套ORM框架,为使用TopLink又要再学习一套ORM框架。 - 在项目中使用方式为:在实体类中,使用
@Entity
、@Table
、@Id
与@Column
等注解。 - 示例代码如下:
import javax.persistence.*;
import javax.persistence.Id;@Entity
@Table(name = "t_user")//数据库中表名
public class UserEO {@Id@Column(name = "USER_ID")//数据库中字段名private String userId;@Column(name = "USER_NAME")private String userName;}
- jar包结构如下图所示:
2.Spring Data JPA是什么?以及相关概述
- 首先Spring框架几乎是无所不能,无所不在。
- 其次Spring也想要做持久化相关工作,并且已有Spring-data-**这一系列包(Spring-data-jpa,Spring-data-template,Spring-data-mongodb等)。
- 其中Spring-data-jpa即代表着,Spring框架对JPA的整合。
- Spring Data JPA是在JPA规范的基础下提供了Repository层的实现。
- 在项目中的repository层中具体表现为:
1.接口要继承JpaRepository
接口,示例代码如下:
@Repository
public interface UserRepository extends JpaRepository<UserEO,String>{//第二个参数是UserEO对应的表的主键类型//直接定义如下方法,不需要写具体的sql语句List<UserEO> findByUserName(String userName);//对于自定义操作(比如更新状态字段为 ‘1’)使用 @Query注解@Query("update UserEO u set u.status = '1' where u.userName = :userName void updateStatusByName(String userName);//此方法 需要拼接条件 在实现类中重写List<UserEO> findByUserName(Condition condition);}
2.实现类无需显式实现 UserRepository
,只要命名为UserRepositoryImpl
即可。
好处在于对于不需要写sql或者sql语句不复杂(使用 @Query 注解可以实现的)的方法,不用重写。
对于需要判断并拼接查询条件的方法,我们可以在实现类中进行重写。
示例代码如下:
public List<UserEO> findByUserName(Condition condition) {StringBuilder jpql = new StringBuilder(" select u from userEO u where u.tatus = '1' " );if (StringUtils.hasText(conditon.getUserName)) {jpql.append(" and u.userName = :userName " ); }//执行 sql .. 返回List集合...
}
jar包结构如下图:
关于spring-data-jpa的使用可参考:https://www.cnblogs.com/dreamroute/p/5173896.html
3.总结
- JPA是一套规范,Hibernate框架做了较好的实现。
- Spring框架独揽了repository的实现,即CRUD相关操作,即 Spring Data JPA
- JPA 对实体(xxxEO)操作,使其与数据库关联。
- 下面2图展示了JPA 与 ORM框架关系,以及 Spring Data JPA做了什么
不知道为什么,突然就想更新下!2018年2月27日~
从maven仓库搜索 'jpa' 的结果(下图)可以看到,JPA的非repository部分已经被Hibernate霸占了,可怕。
本文参考:http://www.lxway.com/528201191.htm
https://www.cnblogs.com/dreamroute/p/5173896.html
http://www.cnblogs.com/xiaoheike/p/5150553.html
https://baike.baidu.com/item/JPA/5660672?fr=aladdin
spring data jpa 与 jpa的区别相关推荐
- 一步步学习 Spring Data 系列之JPA(一)
2019独角兽企业重金招聘Python工程师标准>>> 大概有半年多没有写博客了,主要是最近忙于工作,也没来得及与大家分享技术.当然现在的技术大多都有人写其博客分享了,也找不到合适写 ...
- Spring Data JPA 从入门到精通~JpaRepository介绍
从 JpaRepository 开始的子类,都是 Spring Data 项目对 JPA 实现的封装与扩展.JpaRepository 本身继承 PagingAndSortingRepository ...
- 终于有人把Spring Data JPA 讲明白了!
01 什么是JPA? JPA的全称是 Java Persistence API , 中文的字面意思就是Java 的持久层 API , JPA 就是定义了一系列标准,让实体类和数据库中的表建立一个对应的 ...
- 使用Spring Data REST将Spring Data JPA存储库导出为REST服务
Spring Data模块提供了各种模块,以统一的方式处理各种类型的数据源,如RDBMS,NOSQL存储等. 在我以前的文章SpringMVC4 + Spring Data JPA +使用JavaCo ...
- Spring Data Querydsl-JPA 的简单入门笔记
Spring Data Querydsl-JPA 的简单入门笔记 一. Querydsl面试常识问题 1.Querydsl是什么? 二.简单项目使用 1.pom依赖 2.新增插件,自动生成Q版实体类: ...
- Spring认证中国教育管理中心-Spring Data Neo4j教程一
原标题:Spring认证中国教育管理中心-Spring Data Neo4j教程一(Spring中国教育管理中心) 5. 开始 我们为 SDN 提供了 Spring Boot 启动器.请通过您的依赖管 ...
- JPA、Hibernate和Spring Data JPA区别
大家好,我是神韵,是一个技术&生活博主.出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己.二是希望我的文章可以帮到大家.欢迎来点赞打卡,你们的行动将是我无限的动力. 本篇主题是: ...
- jpa、mybatis、hibernate、spring data jpa区别
在软件开发中,jdbc作为操作数据库的最基本api,它提供了操作数据库的方法.常见的数据库都实现了jdbc,具体的实现都是由数据库厂家来实现.但是jdbc不是一个orm框架(对象关系映射,简单理解为将 ...
- spring data jpa 详解
2019独角兽企业重金招聘Python工程师标准>>> 本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JP ...
最新文章
- PAT甲级1015 Reversible Primes :[C++题解]进制位、秦九韶算法、判质数
- idea中git如何切换到master_IDEA中Git的使用
- mysql root命令_设置更改root密码、连接mysql、mysql常用命令
- 345. Reverse Vowels of a String - LeetCode
- POS Tagging 标签类型查询表(Penn Treebank Project)
- 2016年新开始----新的征程
- hibernate hql 关联查询_Hibernate【关联查询篇】
- 认识以及安装redis
- 命令dd 及简单应用
- python 离散点 等高线_飞时达软件离散点高程、等高线高程、特征线高程等检查与处理...
- vscode下载之前版本插件
- ASPEN.HYSYS.V7.1,Thermoflow软件分享下载
- 基于Key过期失效实现 ‘N分钟内请勿重复提交“ 功能
- c语言输出菱形for循环_使用c语言输出菱形
- win10开启热点后电脑无法打开网页
- PHP版本美团闪购开放平台sdk
- Shiro的介绍与使用
- 成功与失败——《异类》读后感
- 华为认证到底值不值得考?
- navicat for MySql 11 破解版
热门文章
- 50条经典(学生,课程,成绩,教师)表SQL语句~~值得一看!
- 微信小程序--服务器数据交互
- linux线程详解:线程概念、线程调度、线程安全、线程模型
- Logstash过滤详解(一知半解)
- 人力资源数据分析师前景_人力资源数据分析师——大数据下的精英岗位
- THREEJS导入外部OBJ+MTL后内存优化
- Linux - 安装内核源码
- MAC地址 单播,组播,广播
- Winform(C#) 国内开源美化控件主题库1 SunnyUI
- Winform(C#) 国内开源美化控件主题库3: HZHControls