persist 与 save 的区别 30

举例说明Hibernate中Session的两个方法:save与persist的区别???大家不要再去粘贴些资料过来了,我既然提出这个问题就说明我在网上看这方面的资料已经... 举例说明Hibernate中Session的两个方法:save与persist的区别???
大家不要再去粘贴些资料过来了,我既然提出这个问题就说明我在网上看这方面的资料已经看的并不少了,你们只需要举一个例子来说明它们二者的区别就行了。我看了好多资料发现很多人都会从理论上说明它们的区别(包括我在内)却没有一个人能够举出一个例子来说明它们的区别到底在什么地方????

请举例说明区别.......................
展开
 我来答
luxiaoremember
2011-08-04
知道答主
回答量:34
采纳率:0%
帮助的人:11.1万
展开全部
persist和save区别 这个是最迷离的一对,表面上看起来使用哪个都行,在hibernate reference文档中也没有明确的区分他们. 这里给出一个明确的区分。(可以跟进src看一下,虽然实现步骤类似,但是还是有细微的差别) 主要内容区别: 1,persist把一个瞬态的实例持久化,但是并"不保证"标识符(identifier主键对应的属性)被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时候。 2,save, 把一个瞬态的实例持久化标识符,及时的产生,它要返回标识符,所以它会立即执行Sql insert
参考:http://hi.baidu.com/%B4%BA%C5%AF%BB%A8%BF%AA%C3%E6%B3%AF%B4%F3%BA%A3/blog/item/4cd5f9333c4c1fa25fdf0e4d.html
七界之天圆月
2017-03-10
知道答主
回答量:1
采纳率:0%
帮助的人:1019
展开全部

1.hibernate的缓存机制对应事务控制非常有利,区别在于你即没有使用声明式事务(aop),又没有使用编程式事务session.begainTraction()时,通过hibernate缓存机制你还是可以进行事物控制。(不推荐)

//不配置任何事务的情况下
session.save(A);//对表A操作//仅仅是将sql缓存在当前的session中
session.save(B);//对表B操作
session.flush();//这时才将缓存的sql发送的数据库中。如果这时候处于一个事务中你
//还是可以回滚的。因为我们没有配置任何事务所以默认是发生后自动提交。其实上述情况我们已经进行了事务操作保证AB一致性
关键:
session.save(instance)
如果instance对象的主键是native(不是native没有区别),通过auto_increment生成(即数据库端生成)
调用save的话,会立即执行(默认调用flush,直接发送sql),并返回生成的id ,因为没有任何事务会立即持久化,
而看persist不会,而是延迟到手动调用flush时,即flush之前不会生成id。所以使用
persist这是还是可以事务控制

2.插入大量数据时,如果数据对象的主键是native(不是没有区别),即每session.save(instance)一次就会立即发送sql,效率低下,而persist会先放在缓存中,等你flush(),commit()(隐性调用flush发送sql),这时使用persist批量flush效率更高(和缓冲流相识)。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
主意桃李江湖N
2011-08-05 · 超过12用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:14.2万
展开全部
不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式