Hibernate中的session.clear(),save(),和flush()的理解?

User是一个持久化类,代码如下:Useruser=newUser();user.setName("令狐冲");user.setPass("1434");user.set... User是一个持久化类,代码如下:
User user = new User();
user.setName("令狐冲");
user.setPass("1434");
user.setAge(20);
sess.save(user);
sess.clear();或者sess.evict(user);
tx.commit();
sess.close();
问题:1.sess.save(user);不是把user存入缓存吗?添加了sess.clear();不是清空缓存吗?
清空了为什么这样还能把记录添加进数据去?
2.在网上看了很多人都说这样的代码
sess.save(user);
sess.clear();
会抛异常,但是我的就执行的很顺利,不知道具体是怎样的?我的主键策略是indentity。
展开
 我来答
诗云秋昱
推荐于2017-10-13 · TA获得超过177个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:72.5万
展开全部
hibernate最新发布包的javadoc里对这三个方法的解释是:
clear() :Completely clear the session.清空session,该清空操作只对于要保存的、删除的和修改的数据起作用,不涉及查询的结果。
close() :End the session by releasing the JDBC connection and cleaning up.释模燃放并清空JDBC连接。但是不一定非得关闭session。

flush(): Force this session to flush.强制刷新流的缓冲轮银。flush必须在一个操作单元结束之后且在提交事务和关闭连接之前被调用。例如插入一条数据。
=========================================
sess.save(user);的意思是将user持旦桐虚久化,也就是说把数据插入到数据库中。清空缓存是在持久化之后进行的。至于要不要清空缓存,是要看你的FlushMode是怎么设置的。

至于你说的抛异常,要具体看是抛出什么异常了。
love网店专员
2012-11-01 · TA获得超过357个赞
知道小有建树答主
回答量:775
采纳率:84%
帮助的人:117万
展开全部
hibernate清理缓存时更新数据到数据库的,也就是说提交事务的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
k5207k
2012-11-02
知道答主
回答量:18
采纳率:0%
帮助的人:4.1万
展开全部
save()方法在clear()前面 当然可以添加进去啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yt1387417
2012-11-01
知道答主
回答量:57
采纳率:0%
帮助的人:15.7万
展开全部
你写的不是缓存,save()方法在clear()前面,,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式