JPA和hibernate以及SpringDataJPA

2023-10-26

什么是jpa

JPA java persistence api ,为POJO(就是我们的JavaBean)提供持久化标准规范,JavaEE规范之一

主要思想,3个:

1 ORM(Object Relational Mapping)映射元数据,通过XML或注解,描述对象和表之间的关系,框架据此将实体对象持久化到数据库

       关键字:ORM映射、实体持久化

2 规范的API,通过操作实体对象,就能执行对应数据库的CRUD操作,ORM框架让开发从繁琐的JDBC和SQL代码中解脱出来

       关键字:实体对象、JDBC和SQL、解脱

3 查询语言,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合

       关键字:面向对象查询、SQL解耦

 

JPA与ORM什么关系

l  ORM是JPA规范中的一个体现思想,JPA规范包含了ORM

l  Sun公司为了简化现有Java EE和Java SE应用的对象持久化的开发工作,整合ORM技术,结束现在Hibernate、iBATIS、TopLink等ORM框架各自为营的局面,提出了新的JPA ORM规范。

JPA的实现者(供应商):

Hibernate、OpenJPA、TopLink等

 

Hibernate和Hibernate JPA

Hibernate在JPA规范出现后,也提供了对JPA的实现,也就是说Hibernate有两套开发风格,一种我们以前学习的,另一种是JPA风格的。具体demo参考

http://www.micmiu.com/j2ee/hibernate/hibernate-jpa-demo/

 

 

 

 

 

什么是Spring Data

Spring Data 是Spring 的一个子项目(不是很成熟), 旨在统一和简化对各类型持久化存储, 而不拘泥于是关系型数据库还是NoSQL 数据存储。(野心很大)

 

无论是哪种持久化存储, 数据访问对象(或称作为DAO,即Data Access Objects)通常都会提供对单一域对象的CRUD (创建、读取、更新、删除)操作、查询方法、排序和分页方法等。

 

Spring Data则提供了基于这些层面的统一接口(CrudRepository,PagingAndSortingRepository)以及对持久化存储的实现。

 

Spring Data 包含多个子项目:

l  Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化

l  Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 POJO 编程模型的 MapReduce 作业

l  Key-Value  - 集成了 Redis 和 Riak ,提供多个常用场景下的简单封装

l  Document - 集成文档数据库:CouchDB 和 MongoDB 并提供基本的配置映射和资料库支持

l  Graph - 集成 Neo4j 提供强大的基于 POJO 的编程模型

l  Graph Roo AddOn - Roo support for Neo4j

l  JDBC Extensions - 支持 Oracle RAD、高级队列和高级数据类型

l  JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能

l  Mapping - 基于 Grails 的提供对象映射框架,支持不同的数据库

l  Examples - 示例程序、文档和图数据库

l  Guidance - 高级文档

 

(Spring Data就像一口缸,什么都想往里装,想实现完全统一的数据访问层的API)

 

 

 

 

 

 

什么是Spring Data JPA

Spring Data JPA 框架,主要针对的就是 Spring 唯一没有简化到的业务逻辑代码,至此,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JPA 来帮你完成!

 

spring data jpa、jpa以及ORM框架之间的关系

 

Spring data jpa是在JPA规范下提供了Repository层的实现,但是使用哪一种ORM需要你来决定(默认使用Hibernate JPA的实现)。虽然ORM框架都实现了JPA规范,但是在不同的ORM框架之间切换仍然需要编写不同的代码,而通过使用Spring data jpa能够方便大家在不同的ORM框架之间进行切换而不要更改代码。并且spring data jpa 对Repository层封装的很好,也省去了不少的麻烦。 

详细可参考:

http://blog.csdn.net/anxpp/article/details/51415698

https://www.cnblogs.com/dreamroute/p/5173896.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA和hibernate以及SpringDataJPA 的相关文章

随机推荐

  • 接入微信支付,实现Native下单,附有源码仓库

    接入微信支付 接入指引 获取商户号 微信商户平台 https pay weixin qq com 场景 Native支付 步骤 提交资料 gt 签署协议 gt 获取商户 获取APPID 微信公众平台 https mp weixin qq c
  • 华为服务器设置共享文件,服务器如何设置共享文件夹

    服务器如何设置共享文件夹 内容精选 换一换 云上的备份方式相比线下的方式会更加方便便捷 SAP应用系统备份 推荐使用华为云云硬盘服务 VBS 支持全量 增量备份 同时支持手动和定期自动备份等多种方式 HANA系统备份 推荐使用华为云弹性文件
  • git stash

    git stash git stash 可用来暂存当前正在进行的工作 比如想pull 最新代码 又不想加新commit 或者另外一种情况 为了fix 一个紧急的bug 先stash 使返回到自己上一个commit 改完bug之后再stash
  • vue-列表的渲染

    代码 div div
  • ES6--阮一峰版笔记

    ES6 一 ES6变量声明方法 二 Symbol 三 箭头函数 特点 不适用情景 注意事项 四 Promise Set weakSet Map WeakMap WeakRef Iterator与for of循环 Iterator for o
  • 学习笔记(101):R语言入门基础-axes坐标轴控制

    立即学习 https edu csdn net course play 24913 285845 utm source blogtoedu axes坐标轴控制 axes FALSE表示图形没有坐标轴 默认值为TRUE 表示有坐标轴 x 1
  • Docker安装ELK并实现JSON格式日志分析

    ELK是什么 ELK是elastic公司提供的一套完整的日志收集以及前端展示的解决方案 是三个产品的首字母缩写 分别是ElasticSearch Logstash和Kibana 其中Logstash负责对日志进行处理 如日志的过滤 日志的格
  • 湖北02-2005年第四批院校调档分数线对比表

    院校名称 科类名称 2002年 2003年 2004年 2005年 军事经济学院 理工类 398 399 文史类 409 393 海军工程大学 理工类 441 410 402 文史类 409 通信指挥学院 理工类 420 430 383 3
  • 记一次STM32全国研讨会之旅

    记一次STM32全国研讨会之旅 在上大学的时候 我就一直仰慕稚晖君 一直把他当做我的指路明灯 不料 这明灯太亮了 苦苦追寻 望尘莫及 我记得稚晖君受邀参加过STM32全球峰会 终于今年我也有幸参与了STM32全国研讨会的宣传片的录制 哈哈
  • Python 判断三位水仙花数

    判断水仙花数 介绍 水仙花数是一个三位数 它的每位数字的3次幂之和等于它本身 例如 153 1 3 5 3 3 3 知识点 1 算术运算符 幂 符号 整除 符号 取余 符号 2 if else 条件语句 3 类型转换 4 while 循环
  • STM32标准外设库中USE_STDPERIPH_DRIVER, STM32F10X_MD的含义

    在项目中使用stm32标准外设库 STM32F10x Standard Peripherals Library 的时候 我们会在项目的选项中预定义两个宏定义 USE STDPERIPH DRIVER STM32F10X MD 如下图 这两个
  • 3ds max文件导出osg或者ive格式

    osg osgEarth系列文章目录 文章目录 osg osgEarth系列文章目录 前言 参考 前言 首先下载插件osgexp Osgexp的下载地址 安装上之后 如果3ds max导出里面已经可以选择导出ive或者osg 恭喜你 如果没
  • ChatGPT在教育行业如何应用?

    ChatGPT对教育的影响引发了多轮探讨 在多知网近日举办的OpenTalk第39期 AI 2 0技术在教育领域如何开花 活动上 作为连续创业者 AI创业项目Copi创办人卢晓勇分享了关于AI2 0时代下教育领域的创业机会的思考 核心观点
  • 【多目标跟踪】 TrackFormer 耗时三天 单句翻译!!!

    多目标跟踪 TrackFormer 耗时三天 单句翻译 TrackFormer Multi Object Tracking with Transformers Abstract The challenging task of multi o
  • 小程序商城怎么运营?

    小程序商城是一种新兴的电商模式 它具有低成本 高效率 易于推广等优势 越来越多的企业和个体户商家开始使用小程序商城进行电商运营 那么关于小程序商城怎么运营呢 下面就让我们来看看小程序商城的运营方法吧 如何进行小程序商城的运营 1 确定目标用
  • MES系统实施价值主要在哪四个方面?

    经过多年的建设 MES扩大了使用范围 增强了应用效果 MES覆盖范围从最初的化工行业 扩展至现今的各大制造行业 同时 MES作为智能生产 精细管理的有力抓手 贯穿于企业生产 管理的各个环节与层面 为提高决策效率 节约生产成本 改善流程控制
  • §4 画出你的轨迹——标注轨迹及演示动画

    4 标注轨迹及演示动画 4 1 折线标注 4 1 1 创建一个简单的折线 4 1 2 连接数据库批量创建折线 4 2 轨迹演示动画 4 1 折线标注 4 1 1 创建一个简单的折线 参考百度地图官方文档 var polyline new B
  • yagmail设置定时任务

    使用定时器之前需要先安装schedule第三方库 pip install schedule 1 附注释的代码 import yagmail import schedule import time import datetime yag ya
  • java发送json post请求_java代码发送JSON格式的httpPOST请求

    package com test import java io BufferedReader import java io DataOutputStream import java io IOException import java io
  • JPA和hibernate以及SpringDataJPA

    什么是jpa JPA java persistence api 为POJO 就是我们的JavaBean 提供持久化标准规范 JavaEE规范之一 主要思想 3个 1 ORM Object Relational Mapping 映射元数据 通