我先情况说一下:以下简写
openSession
new Transaction
从数据库取得值到ObjectA的一个list,且设为只读
Transaction.commit更改list.get[0],对象中的一些属性,如本来name为lili的现在改为meimeiopenSession
从数据库取得值到ObjectA的一个list,且设为只读,且identifier“主键”(不知道用什么中文好)同之前的一样
Transaction.commit此时发现name依然为meimei(因为我设置了只读,数据库也确实没改变,为lili,但取出来的值却是meimei)
openSession
new Transaction
从数据库取得值到ObjectA的一个list,且设为只读
Transaction.commit更改list.get[0],对象中的一些属性,如本来name为lili的现在改为meimeiopenSession
从数据库取得值到ObjectA的一个list,且设为只读,且identifier“主键”(不知道用什么中文好)同之前的一样
Transaction.commit此时发现name依然为meimei(因为我设置了只读,数据库也确实没改变,为lili,但取出来的值却是meimei)
解决方案 »
- 启动时bug
- jsp报错,An exception occurred processing JSP page /user_add.jsp at line 129
- struts2 token 页面刷新重复提交问题
- JSP页面自动提交和查询实时信息的问题
- 问题:如何用程序的方法修改 tomcat-users.xml 里边的用户密码?(兼升级散分)
- Servlet过滤器为啥不能过滤中文???
- common upload如何区分不同request文件上传的进度
- servlet如何实现对文件的删除?
- 比较菜的问题:如何才能准确知道tomcat正常运行?
- java 开发 网页聊天
- struts 标签 <logic:empty> 问题
- 求正则表达式。关于html
数据库与内存里面数据不能同步更新
new Transaction
从数据库取得值到ObjectA的一个list,且设为只读
Transaction.commit更改list.get[0],对象中的一些属性,如本来name为lili的现在改为meimei在这里添加关闭会话的代码openSession
从数据库取得值到ObjectA的一个list,且设为只读,且identifier“主键”(不知道用什么中文好)同之前的一样
Transaction.commit
我先情况说一下:以下简写
openSession
new Transaction
从数据库取得值到ObjectA的一个list,且设为只读
Transaction.commit更改list.get[0],对象中的一些属性,如本来name为lili的现在改为meimeinew Transaction***********************之前写错了
从数据库取得值到ObjectA的一个list,且设为只读,且identifier“主键”(不知道用什么中文好)同之前的一样
Transaction.commit此时发现name依然为meimei(因为我设置了只读,数据库也确实没改变,为lili,但取出来的值却是meimei)
嗯,是这样的,主键就是对应数据表中的userid(我也分不清是代理还是自然主键,呵呵)“数据库与内存里面数据不能同步更新”假如是这种情况有没有什么方便的解决办法让他同步更新
还有,确实再重新close-openSession可以解决问题,但这样我觉得性能上有点说不过去
//这时其实只返回了一个objectA对象,也就是本来可以用query.uniqueResult();只是为了通用用了list()方法然后我再这样得到objectA
ObjectA objectA = (ObjectA)list.get(0);
get()方法,先看缓存里有没有,有就用缓存里的,没有才从数据库里加载。
使用HQL,直接从数据库加载,而不管缓存里有没有现成的。
//这时其实只返回了一个objectA对象,也就是本来可以用query.uniqueResult();只是为了通用用了list()方法然后我再这样得到objectA
ObjectA objectA = (ObjectA)list.get(0); 在这里仍然应该使用query.list();
还是Object A object A = (ObjectA)query.uniqueResult(); //如果是这个的话,又不满足方法接口的需要了
ObjectA objectA = (ObjectA)list.get(0);
reflesh(),重新到DB更新一下,导致其它的不是同一ID的也要更新,更不好
还可以用session.clear()。简直就是不要让Hibernate用缓存功能了,不过有时缓存真的没多大用处性能方面都不是很理想,还是觉得前一个好用一点