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。 展开
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。 展开
展开全部
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是怎么设置的。
至于你说的抛异常,要具体看是抛出什么异常了。
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是怎么设置的。
至于你说的抛异常,要具体看是抛出什么异常了。
展开全部
hibernate清理缓存时更新数据到数据库的,也就是说提交事务的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
save()方法在clear()前面 当然可以添加进去啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你写的不是缓存,save()方法在clear()前面,,,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询