Jpa中的persist方法和merge方法有哪些区别,帮我举一个例子解释下?

作者&投稿:凌尤 (若有异议请与网页底部的电邮联系)
关于学习的文章~

头悬梁锥刺股
汉朝有个叫孙敬的人,从小勤奋好学,他每天晚上学到深夜,为了避免发困,他用绳子的一头拴柱头发,一头拴在房梁上。战国时,有个名叫苏秦的人,想干一番大事业,便刻苦读书。每当深夜读书时,他总爱打盹。
于是,他就在自己打盹的时候,用锥子往大腿上刺一下,以提精神。孙敬和苏秦的故事感动了后人,人们用“悬梁刺股”来表示刻苦学习的精神。

2.凿壁偷光
况衡,字稚圭,西汉东海(汉郡名,今江苏省邳县以东至海,连山东省滋阳县以东至海地区)人。他出身农家,祖父、父亲世代都是农民。传到匡衡,却喜欢读书。他年轻时家里贫穷,白天给人做雇工来维持生计,晚上才有时间读书。可是家里穷得连灯烛也点不起。
邻家灯烛明峦,却又照不过来。匡衡就想出个法子,在贴着邻家的墙上凿穿一个孔洞,“偷”它一点光亮,让邻家的灯光照射过来。他就捧着书本,在洞前映着光来读书。

3.孟母三迁
孟子是鲁国贵族孟孙氏的后裔,但是传到他这一代,早已衰微。父亲早逝,与母亲相依为命。但孟子小的时候非常调皮,为了让他受到良好的教育,孟母也加入了对好的学区房的追求潮流里。
起初,他们住在墓地旁边。孟子就和邻居的小孩一起学着大人跪拜、哭嚎的样子,玩起办理丧事的游戏。孟母看到了,就皱起眉头:“不行!我不能让我的孩子住在这里了!”不然,以后孟子很有可能变成殡葬礼仪了。
孟子的妈妈就带着孟子搬到市集旁边去住。到了市集,孟子又和邻居的小孩,学起商人做生意的样子。一会儿鞠躬欢迎客人、一会儿招待客人、一会儿和客人讨价还价,表演得像极了!只能说,孟子小时候模仿能力真的很强,也许也正因为孟母也意识到了自家熊孩子的这个特定,他们又搬家了。
这一次,他们搬到了学校附近。孟子开始变得守秩序、懂礼貌、喜欢读书。因为这次他模仿的是读书人。这个时候,孟母终于满意地点着头说:“这才是我儿子应该住的地方呀!”

4.萤火生辉
东晋人车胤,年幼时好学不倦,勤奋刻苦。他白天帮大人干活,夜晚便捧书苦读。可是由于家境贫寒,常常没钱买油灯,书也读不成了。他为此十分苦恼。一个夏夜的晚上,车胤坐在院子里默默回忆着读过的书上的内容,忽然发现院子里有许多萤火虫一闪一闪地在空中飞舞。
他忽然心中一动,要是把这些萤火虫聚集在一起,借它们的光不就可以读书吗?于是,他开始捉萤火虫,捉了十几只,把它们装在白纱布缝制的口袋里,挂在案头。从此,他每天借着萤光苦苦地读书。

5.各个击破
苏东坡学识渊博,他有一种“各个击破”的读书法。他认为一本书每读一遍,只要理解和消化一个问题就行了;一遍又一遍地读,就能达到事事精通。一本书的内容是很丰富的,而人的精力有限,不可能一下子全部吸收,只能集中注意力了解某一个方面。
比如想探究历代兴亡治乱的原因,那么就从这个角度去读;要探究史实典故,就换另一个角度,再读一遍。这个方法虽有些笨,但这样读过之后,各个方面都经得起考验。

在家高效学习首先要订立在家学习的计划,按照学习计划进行学习。在家学习由于没有人指导和监督,可能不知道从那儿搞起走。有的人东看一下,西看一下,十分钟还没有进入到主题。因此,订立了计划后就知道今天要学习的内容,围绕学习内容来进行学习,才能做好有的放矢,不会浪费时间。在订立计划的同时,一定要计划上写清楚明确内容,光有计划是不行的。

在家高效学习在注意合理地分配学习时间。各人的学习效率在什么时间最好不一样,有的人喜欢早上背文科方面的内容,有的人喜欢中午的时间看书,有的人喜欢在晚上进行数学方面的计算,找准各人学习效率高的最佳时间,在最佳的时间利用好,才能得到事半功倍的效果。
在家高效学习注意休息和调节。不管在什么地方学习都可能累,累的时候要注意休息和调节。文科学习累了,我可以学习理科,理科学习够了,我可以看文科,听听音乐,看看外边的风景。如果只是学习不休息,只是休息不学习,效果没有,根本谈不上高效。休息的方式有很多种,选择轻松的方式进行学习。在家也要营造一个温馨的学习环境,不要受家人和外边的吵闹。叮嘱家人小心讲话,不要把电视的声音调大。可以泡上一杯素茶,或一杯咖啡,累了小撮一口,会心一笑。

在家高效学习也要注意一些高效的学习方法。如果对一些概念记不住,可以用手写几个关键词,根据关键词来进行记忆。也可以抄上几段,好记忆不如坏笔头。对于理科的,注意进行演算,搞不懂的地方,可以将书先看两遍,再进行计算和分析,把基础打扎实,磨刀不误砍柴工。平时要注意复习和预习。不要学习了就不去管,还要注意知识的积累,和平时的生活联系起来去分析和思考,也就是学的知识要进行运用,才会学习的扎实和不容易忘记。知识点可以进行归纳,归纳成图形,树形,写在一张纸上。当遇到问题,先要进行自己的独立思考和分析,如果实在想不通,可以上网查找资料,查找资料一定要有目的性,对网上的别的东西不能去关注。集中自己的精力学习。

在家高效学习要有好的自觉性。在家没有,没有在学校学习那样,有老师管,要检查作业和有一定的作息时间,有良好的学习环境。家里学习的时间要靠自己来把握,学习的灵活性大,稍不注意时间就跑掉了,一天就过去了。每天学习的情况,学习的知识要进行总结和积累,把自己的好经验总结起来,把不好的明天坚决要改掉。

1、含义不同

persist是保存,跟save方法一样,更接近持久化的含义;而merge是合并的意思,就是当保存的实体,根据主键id划分,如果已存在,那么就是更新操作,如果不存在,就是新增操作。

2、用法不同

persist会把传进去的实体放到持久化上下文中,此时如果持久化上下文中有了这个实体,就会抛出javax.persistence.EntityExistsException,没有的话事务提交的时候把那个对象加进数据库中。

而merge会在持久化上下文中生成传进去的实体的受管版本,如果已经有了受管版本,那也不会抛出异常,然后把那个受管的实体返回出来,事务提交的时候如果数据库中不存在那个对象(那一行),就把把那个受管的加进去,存在的话就替换掉原来的数据。

扩展资料:

JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。

JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。

JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。

JPA定义了独特的JPQL,JPQL是EJB
QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP
BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。

JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。

参考资料来源:百度百科—JPA



persist(),是保存,跟save()方法一样,知识jpa官方说叫persist比较好一些,更接近持久化的含义。而merge()是合并的意思,就是当你保存的实体,根据主键id划分,如果已存在,那么就是更新操作,如果不存在,就是新增操作。

persist会把传进去的实体放到持久化上下文中,此时如果持久化上下文中有了这个实体,就会抛出javax.persistence.EntityExistsException,没有的话事务提交的时候把那个对象加进数据库中,如果数据库中已经存在了那个对象(那一行),就会抛出com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;

而merge会在持久化上下文中生成传进去的实体的受管版本,如果已经有了受管版本,那也不会抛出异常,然后把那个受管的实体返回出来,事务提交的时候如果数据库中不存在那个对象(那一行),就把把那个受管的加进去,存在的话就替换掉原来的数据。merge是如果持久化上下文中有了受管版本,那就更新,没有就复制一份,返回受管的。

再次总结persist(①,②-③,④-⑤):
(这里说的抛出的异常都是指对象(或者数据库中的行)重复的异常)
① 如果persist的是一个受管实体(即已经在上下文中),就不会抛出异常。
②如果persist的是一个游离实体(即上下文中没有它),而上下文中又没有它的受管版本,数据库中也没有,也不会抛出异常,而会把这个实体写进数据库中。
③如果persist的是一个游离实体(即上下文中没有),而上下文中又没有它的受管版本,数据库却有这个实体,那么EntityManager在persist它的时候不会抛出异常,但是事务提交的时候就会抛出异常:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '7' for key 1;
④如果persist的是一个游离实体(即上下文中没有),而上下文中却有它的受管版本,数据库中又没有这个实体,那么还是不会抛出异常,而是把它的受管版本加进去(不是那个游离的,是那个受管的!)(即,这种情况persist和没persist是一样的!)。
⑤如果persist的是一个游离实体(即上下文中没有),而上下文中却有它的受管版本,数据库中也有了这个实体,那么EntityManager在persist它的时候就会抛出异常:javax.persistence.EntityExistsException
而merge就不会抛出什么对象重复的异常的了。。

persist(),是保存,跟save()方法一样,知识jpa官方说叫persist比较好一些,更接近持久化的含义。而merge()是合并的意思,就是当你保存的实体,根据主键id划分,如果已存在,那么就是更新操作,如果不存在,就是新增操作。

persist(),是保存,跟save()方法一样,知识jpa官方说叫persist比较好一些,更接近持久化的含义。而merge()是合并的意思,就是当你保存的实体,根据主键id划分,如果已存在,那么就是更新操作,如果不存在,就是新增操作。

persist(),是保存,跟save()方法一样,知识jpa官方说叫persist比较好一些,更接近持久化的含义。而merge()是合并的意思,就是当你保存的实体,根据主键id划分,如果已存在,那么就是更新操作,如果不存在,就是新增操作。


亚瑟王的圆桌骑士(名字)
在亚瑟王传说中,他是圆桌骑士中最纯洁的一位,也是唯一能拿起圣杯的人(骑士中最后寻到圣杯下落的是三骑士:最世俗的Bors(鲍斯),最单纯的Persivale(珀西瓦尔)和最纯洁的Galahad(格拉海德))。是Lancelot和Elaine(Pelles王的女儿)的儿子。他在刚来到Arthur的宫殿的时候,就坐在了一个危险的座位上,因为这个位置的骑士将...

高分求一款网络游戏
展开全部 反恐精英(CS) 1.6中文版人气:442201 ·反恐精英(CS) 包含机器人 V1.5硬盘人气:295841 ·抢滩登陆战 2006人气:42327 ·F22战斗机 完美硬盘版人气:72145 ·半条命人气:12430 ·VR特警2 简体中文版人气:56947 ·快枪手人气:9862 ·孤单枪手+双资料篇人气:33782 ·3D魂斗罗之灭绝地带 试玩版人气:24671 ·...

急求游戏名称
影分身画人气:331 ·恶魔城:被夺走的刻印人气:87 ·高达00人气:192 ·三国志DS1 汉化版人气:166 ·牧场物语:精灵驿站 汉化版人气:119 ·钢之炼金术师 剧情汉化版人气:112 ·超级机器人大战W 汉化版人气:159 ·火影忍者疾风传激斗鸣人VS佐助人气:273 ·火影忍者 疾风传忍 列传2人气:255 ·仙境传说DS 汉化版...

好玩的单机游戏
展开全部 反恐精英(CS) 1.6中文版人气:442201 ·反恐精英(CS) 包含机器人 V1.5硬盘人气:295841 ·抢滩登陆战 2006人气:42327 ·F22战斗机 完美硬盘版人气:72145 ·半条命人气:12430 ·VR特警2 简体中文版人气:56947 ·快枪手人气:9862 ·孤单枪手+双资料篇人气:33782 ·3D魂斗罗之灭绝地带 试玩版人气:24671 ·...

简单的RPG游戏
·波斯王子-时之沙(Prince of Persi人气:8552 ·地球帝国2 中文版人气:19838 ·2d格斗(DestractionDesire) V1.0人气:17792 ·吞食鱼简体中文版 V1.0人气:29075 ·合金弹头 合集(1,2,3,4,5,X) 无限人气:189833 ·三国战纪 1代完整版(115,117,119)人气:428702 ·拳皇(The King of Fighters) 97人气:...

通州市17874658895: hibernate的session的persist方法和load方法是起什么作用的?
成王生忆复: persist是JPA规范定义的方法,它其实调用的就是Hibernate中的save方法.之所以叫persist,是因为JPA规范称保存为将对象持久化,所以方法名也叫persist.所以你如果使用JPA就用persist,如果使用hibernate就用save好了.

通州市17874658895: session的persist方法是干什么的 -
成王生忆复: 调用的就是Hibernate中的save方法

通州市17874658895: 如何理解jpa与比hibernate的关系?单单使用hibernate可以实现数据持久化?单单使用jpa可以实现么? -
成王生忆复: jpa是java的持久化标准,hibernate是jpa的具体实现,所以单独用jpa是不行的,java只实现了jpa的接口,

通州市17874658895: hebernate中映射级联有save - update 为什么还要save -
成王生忆复: 因为saveorUpdate是需要验证实体类是否已经为持久态的,而save不需要校验直接创建一条新的数据库记录,这里对于资源的消耗是不同

通州市17874658895: spring data jpa 使用abstractpersistable接口 怎么使用@modifying 注解 -
成王生忆复: 总结如下(1)可以通过自定义的 JPQL 完成 UPDATE 和 DELETE 操作.注意: JPQL 不支持使用 INSERT;(2)在 @Query 注解中编写 JPQL 语句, 但必须使用 @Modifying 进行修饰. 以通知 SpringData, 这是一个 UPDATE 或 DELETE 操作 (3)UPDATE 或 DELETE 操作需要使用事务,此时需要定义 Service 层,在 Service 层的方法上添加事务操作; (4)默认情况下, SpringData 的每个方法上有事务, 但都是一个只读事务. 他们不能完成修改操作.

通州市17874658895: jpa的配置文件persistence.xml中class太多,怎么可以更简便的配置 -
成王生忆复: 设置区域名称的目的,是为了在公式引用 时内容更简洁直观,且名称还可以包含函数计 算的数据区域等更强大的功能. 比楼上更简便的方法,是 1.选择需要设置的单元格区域 2.在编辑栏前面的名称框中直接输入名称并回车即可

通州市17874658895: jpa 注解,也就是javax.persistence 里面的东西,@Id, @Column 这些要标注在哪里? -
成王生忆复: 你可以看看JPA注解的API文档,@Id一般定义只在变量上.@Column的,API显示它是@Target({METHOD, FIELD}) @Retention(RUNTIME),说明既可以定义在方法上,也可以定义在变量上.所以只定义在getter方法上就表示它是只读属性,定义在变量上就是读写皆可.

通州市17874658895: Hibernate 的Session 中的save()方法和persist()方法有什么区别 -
成王生忆复: save()和 persist()方法区别:使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值);使用 persist() 方法来保存持久化对象时,该方法没有任何返回值.因为 save() 方法需要立即返回...

通州市17874658895: java中jpa什么意思? -
成王生忆复: JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.JPA的总体思想和现有Hibernate、TopLink,JDO等ORM框架大体一致.总的来说,JPA包括以下3方面的技术:...

通州市17874658895: myeclipse 中怎么创建jpa工程 -
成王生忆复: 参考下面方法:打开MyEclipse,点击File->New->Project,弹出界面.输入项目名myJpa,版本选择2.0,直接点击finish.再次弹出一个对话框,点击->否,jpa项目创建完成后的界面和persistence.xml文件就出来了.下载Hibernate的jar包.添加...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网