什么是JPA,JPA的概念

  • 什么是JPA

 JPA(Java Persistence API,Java持久化API),定义了对象-关系映射(ORM)以及实体对象持久化的标准接口,它是一套标准,具体的实现要根据不同的厂商来提供,就跟JDBC类型

  • 持久化单元

        持久化单元是运行时的配置的主要单元,它定义了提供程序在程序执行期间管理持久化类所需要知道的各种信息,例如数据库链接配置,实体信息,就是在持久化单元里面配置,可以在persistence.xml对它进行配置(在Spring中就不需要)

        对于每一个持久化单元,都存在一个EntityManagerFactory,所以可以将持久化单元的配置视为对于持该持久化单元的EntityManagerFactory工厂配置

        每个持久化单元都必须有一个名称,这样,应用程序在指定范围内唯一的标识它

  • 实体管理器

        实体在数据库中真正持久化之前,需要调用一个特定的API,这个API就是由实体管理器实现,在使用实体管理器的持久化API之前,实体就是一个普通的Java对象

        实体管理器是Java实体对象与数据库交互的中介,它负责管理一组对应的实体,包括这组实体的CRUD操作,实体管理器也负责与持久化上下文PersistenceContext进行交互,可以实现对实体不同状态转换的操作

        通过显示的把实体作为参数传递到一个方法中调用,或者是从数据库直接读取它,实体管理器获得一个实体的引用,此时,将该对象称为由实体管理器托管

        将实体管理器配置为能够持久化或管理特定类型(实体)的对象,读取他们和把他们写入到一个给定的数据库,并且它是由一个特定的持久化提供程序PersistenceProvider来实现,提供程序为整个Java持久化API提供后台实现引擎,从EntityManager到查询类以及SQL的实现   

        所有的实体管理器均来自EntityManagerFactory类型的工厂,实体管理器的配置是以创建它的EntityManagerFacotry为模版,但是把它单独定义为持久化单元,持久化单元隐式或显示的决定设置,特定的EntityManagerFacotry实例,的所有实体管理器上,使用的实体类都限定到该持久化单元,因此,在持久化单元及其具体的EntityManagerFactory存在一一对应关系
        持久化单元为了允许区分不同的EntityManagerFacotry而对他们进行命名,从而,应用程序可以决定采用哪一个配置或者持久化单元,用于特定实体的操作    

  • 实体操作和生命周期

            实体属于一个单一的持久化上下文,在任何给定的时间都不应该由一个以上的持久化上下文进行管理,说白了只能允许一个持久化上下文管理一个实体

        新建 New–即未有id值,实体新创建,尚未与持久化上下文关联
        托管 Managed–有id值,实体当前处于持久化上下文的管理之下,任何对该实体的更改都会在事务提交时自动同步到数据库
        游离 Detached–有id值,实体曾经处于托管状态,但现在已从持久化上下文中分离。它不再受持久化上下文的管理,因此对实体的更改不会自动同步到数据库
        删除 Removed–有id值,实体已被标记为删除。在事务提交时,它将从数据库中删除。

  • 持久化上下文

        实体管理器在任何给定的时间内所管理的实体对象的集合,它一般包含有当前事务范围内的,被管理的实体对象(Entity)的数据集合,称为它的持久化上下文        
        在使用JPA等ORM框架进行持久化时,持久化上下文是一个重要概念,它充当了应用程序和数据库之间的缓冲区,当通过ORM框架操作数据库时,实际上是与持久化上下文交互,而持久化上下文负责将这些操作转换为对应数据库的操作,而真正操作数据库的则是实体管理器

        在任何时候,具有相同持久化标识(ID)的Java实例,在持久化上下文中只能存在一个,也就是ID相同的实例只能存在一个

  • JPA的关系图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进程概念篇

1. 冯诺依曼体系结构 目前市面上,几乎所有计算机的硬件构成都遵循冯诺依曼体系结构 与最原始的【输入设备->CPU->输出设备】这样简单的结构相比,冯诺依曼体系结构有何好处? 每次我们在键盘输入数据,经过CPU处理&#xff0c…

train拦截器

拦截器拦截到的请求,设置本地变量member,主要为了获取memberId,在passenger表中存放memberId。 拦截器: 乘客表外键memberId关联member表

开抖店卖什么产品最好?这些类目建议新手收藏好,带你快速起店!

大家好,我是电商小布。 各位小伙伴们加入到抖店这个市场当中,当然就是为了利用我们的小店实现产品转化工作。 而在我们开店的时候,就要考虑好一个东西,就是我们开店到底要卖什么?什么样的产品好卖? 跟这…

OSPF协议详解

静态缺点 1、中大型复杂网络----配置量大 2、不能实时收敛 动态-----可以实时收敛 IGP----内部网关路由协议 RIP OSPF EIGRP ISIS EGP----外部网关路由协议 BGP IGP (选路佳 占用资源 收敛快)----一个协议好需满足这三个 距离矢量 DV RIP…

Java 线程的状态

线程状态 操作系统的线程 从上图可以详细分析出线程的五种状态以及状态之间的切换。 1)新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t new MyThread(); 2)就绪…

【Vue3进阶】- 第2学堂小商城实战课程前言

该教程为进阶教程,如果你还不了解Vue3的基础知识,可以先前往Vue3基础教程,从入门到实战。 学习时遇到的任何疑问都欢迎在相应课文页面下方的问答区进行提问哦 我能学到什么? 编程写法千千万,实现需求是第一。 教程中…

智慧工地可视化解决方案(2)

系统功能 总体应用设计 系统业务分为中心管理、视频联网、人员管理、环境管理、起重机械管理、车辆管理。 每个业务对应一个或者多个硬件系统。中心管理为监控中心。视频联网包含视频联网监控和移动执法子系统。人员管理分为实名制考勤子系统和人员安全子系统(安全帽)。起…

5.11 Vue配置Element UI框架

Vue配置Element UI框架 目录一、 概要二、 开发前准备1. 搭建Vue框架 三、 安装 Element UI1. 引入 Element UI 依赖2. 在 main.js 中引入 Element UI 和相关样式:3. 按需引入(非必须, 可忽略)4. 简单构建一个主页面 目录 一、 概要 Element UI 是一个基于 Vue.js …

安卓Termux系统安装MariaDB结合内网穿透实现公网连接本地数据库

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

SSM框架学习——Spring事务管理

Spring事务管理 概念 事务(Transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么都不执行,是一个不可分割的工作单元。 事务有如下特性: 原子性隔离性一致性持久性 …

116. 飞行员兄弟(递推+暴力)太难了不要求

输入样例&#xff1a; --- ---- ---- ---输出样例&#xff1a; 6 1 1 1 3 1 4 4 1 4 3 4 4 代码&#xff1a; #include<algorithm> #include<iostream> #include<cstring> #include<queue> #include<cmath> #define x first #define y second…

往word表格插入图片,表格大小如何不变形?

在word中进行大量图片排版时&#xff0c;往往会用到表格。然而在往word表格插入图片的过程中&#xff0c;表格往往会随图片大小自适应变化&#xff0c;如何保证图片自适应表格大小&#xff08;即图片按照所给定的表格大小自动缩放&#xff09;&#xff0c;解决方法如下&#xf…

小红书运营快捷回复工具

小红书作为一个热门的社交电商平台&#xff0c;吸引了众多品牌和个人用户进行运营和互动。而很多做小红书运营的姐妹&#xff0c;经常会有回评论懒得打字的困扰&#xff0c;为了提高回复评论和私信的效率&#xff0c;本文给大家推荐一款快捷回复工具&#xff0c;手机电脑都能用…

【Python使用】嘿马头条完整开发md笔记第3篇:数据库,1 新增【附代码文档】

嘿马头条项目从到完整开发笔记总结完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;课程简介&#xff0c;ToutiaoWeb虚拟机使用说明1 产品介绍,2 原型图与UI图,3 技术架构,4 开发,1 需求,2 注意事项。数据库&#xff0c;理解ORM1 简介,2 安装,3 数据库连接…

电商新手选品易犯6大通病,85%的人都踩过雷!

电商选品是一个复杂而关键的过程&#xff0c;需要综合考虑多种因素&#xff0c;尤其对于刚刚涉猎电商行业的新手来更有难度&#xff0c;许多电商新手在选品过程中都会犯一些通病&#xff0c;以下是一些常见的电商选品通病以及调整建议&#xff0c;希望对大家有所帮助&#xff1…

《第一行代码 Android 第三版》 天气预报APP SunnyWeather——交作业

跟着书本手敲一遍kotlin项目SunnyWeather,MVVM架构&#xff1a; 没啥难度&#xff0c;就是熟悉kotlin... github链接&#xff1a;SunnyWeather/app at master xda1212/SunnyWeather GitHub

Vivado Lab Edition

Vivado Lab Edition 是完整版 Vivado Design Suite 的独立安装版本 &#xff0c; 包含在生成比特流后对赛灵思 FPGA 进行编程和 调试所需的所有功能。通常适用于在如下实验室环境内进行编程和调试&#xff1a; 实验室环境中的机器所含磁盘空间、内存和连 接资源较少。Vivad…

【环境搭建】(四)ubuntu22.04系统安装Opencv4.8.0+Opencv-contrib4.8.0

一个愿意伫立在巨人肩膀上的农民...... 一、安装下载所需工具 1.打开终端&#xff0c;输入以下命令来更新软件源&#xff1a; sudo apt-get update 2.安装wget&#xff1a; sudo apt-get install wget 3.下载opencv和opencv-contrib包&#xff1a; wget -O opencv-4.8.0.…

备忘录软件哪款可以加密?备忘录app怎么加密?

在快节奏的现代生活中&#xff0c;备忘录软件已成为我们不可或缺的助手。它不仅能方便我们随时记录任务事项&#xff0c;捕捉生活中的灵感&#xff0c;还便于我们随时修改和查看记录内容&#xff0c;实用性极高。然而&#xff0c;随着记录内容的增多&#xff0c;数据安全性问题…

【自动化测试】 环境部署和元素定位

写在前面 勤奋跟吃苦不一样&#xff0c;假如你对工作&#xff0c;生活不满意。就要跳出圈子&#xff0c;接触其它人或事物&#xff0c;提升自己。从而换个工作&#xff0c;或者换了心态看待问题。而不是&#xff0c;吃苦的加班逼着自己去内卷&#xff0c;卷来卷去觉得吃苦受累&…