013 把模型对象存入session的危险性
2008-11-17 14:46
162 查看
Be careful when storing a model in a session. It will behave differently than you expect and can easily get out of sync with the database. Instead of storing the model directly in the session, store the id to the model and use that to fetch it from the database.
在session中存储模型的时候要小心了,这样可能会发生许多与你意愿想违背的情况,并且会与数据库中的数据脱节。不要直接将model放到session中,最好存储它的id值,并且用这个id值来获取数据库中存储的对象。
3个action
prepare将User模型的一个对象存入session,然后跳转到show
show将session中的对象显示出来
update将session中的user对象的name属性改为"Foo"(并不存回数据库),然后跳转到show
如果执行update的话,在session里会一直保存这个name="Foo",除非将session清除。
另外,如果在保存user出错时,这个错误信息也会一直存储在session中。
那么正确的做法是:
将模型对象的id存入session中,在每次显示的时候是从session中取出id值,然后到数据库中查找数据。这样就避免了将对象直接存入session中的种种问题。
在session中存储模型的时候要小心了,这样可能会发生许多与你意愿想违背的情况,并且会与数据库中的数据脱节。不要直接将model放到session中,最好存储它的id值,并且用这个id值来获取数据库中存储的对象。
3个action
prepare将User模型的一个对象存入session,然后跳转到show
show将session中的对象显示出来
update将session中的user对象的name属性改为"Foo"(并不存回数据库),然后跳转到show
如果执行update的话,在session里会一直保存这个name="Foo",除非将session清除。
另外,如果在保存user出错时,这个错误信息也会一直存储在session中。
那么正确的做法是:
将模型对象的id存入session中,在每次显示的时候是从session中取出id值,然后到数据库中查找数据。这样就避免了将对象直接存入session中的种种问题。
相关文章推荐
- PHP中用session存入对象的解决方案
- 将实体存入到session对象和实现同一功能的jsp页面复用技术——学生管理系统心得体会
- C#里将模型对象序列化成XML并存入Access库
- 对象存入session中时,未序列化报错的问题
- 关于多次启动事务时改变Session中的对象存入了数据库的解决方案
- 用Socket和MSHTML对象模型创建自己的浏览器
- Qt对象模型
- session未将对象引用设置到对象的实例
- 反序列化存入数据库里面的session数据
- 避免混用对象模型
- Java ConcurrentHashMap存入引用对象时也是线程安全的
- 对象模型如何影响程序
- java 程序中获取session/request/response/上下文路径等对象
- 深度探索c++对象模型之临时对象的探讨
- 【深度探索C++对象模型】第二章 构造函数语意学(中)
- 告诉你如何获得(struts2)request response session 对象
- Sharepoint2010应用开发三:使用客户端对象模型(Client Object Model)读取列表数据
- ASP.NET 页面对象模型
- 虚表结构与虚继承内存对象模型
- C++ - 对象模型之各种对象的内存分配、构造和析构