浏览 7804 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-07-28
我现在想到了一种办法:对象序列化,无论何种表单,在编辑过程中用ajax保存后,创建bean实例保存数据但不映射保存到对应的数据库表,而是序列化后统一保存在一个草稿箱表中,当用户提交表单时,保存数据库同时删除这条草稿,如出现异常,则用户再次登录时可提示恢复,则从库中取出反序列化并填写到表单中展示给用户。 这样无论是什么表单,都可以统一的方式实现了,也只需要一个表就可以了。 还没开始动手实现,请大家讨论,这是不是实现草稿箱的最佳方式? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-28
序列化并不适合长期保存,一旦代码重新编译。。
|
|
返回顶楼 | |
发表时间:2009-07-28
但那只是实体bean,不太会经常改变的,如果改变,通常是增加新的属性,想想办法也许还能用吧,早期的草稿只是少了几个新属性嘛。
|
|
返回顶楼 | |
发表时间:2009-07-28
zstsr 写道 序列化并不适合长期保存,一旦代码重新编译。。
我看没必要那么讲究,把草稿放在 session 中就行,用户登出就自然回收掉了。 |
|
返回顶楼 | |
发表时间:2009-07-29
最后修改:2009-07-29
我的想法是,一个系统不可能会有很多草稿的,撑死了几千份;直接保存xml好了
bergman 写道 我想实现类似于gmail的草稿箱,希望是通用的,如需要则所有表单均可以自动保存,但没想明白草稿数据如何保存,不同的表单表结构千差万别,总不能建许多临时表吧。
我现在想到了一种办法:对象序列化,无论何种表单,在编辑过程中用ajax保存后,创建bean实例保存数据但不映射保存到对应的数据库表,而是序列化后统一保存在一个草稿箱表中,当用户提交表单时,保存数据库同时删除这条草稿,如出现异常,则用户再次登录时可提示恢复,则从库中取出反序列化并填写到表单中展示给用户。 这样无论是什么表单,都可以统一的方式实现了,也只需要一个表就可以了。 还没开始动手实现,请大家讨论,这是不是实现草稿箱的最佳方式? |
|
返回顶楼 | |
发表时间:2009-07-29
可以采用统一的格式来序列化 如xml json
|
|
返回顶楼 | |
发表时间:2009-07-29
但XML要编程的啊,每种表单不一样要分别处理,不如序列化来得省事,把准备向数据库提交的对象序列化保存就行了。
我在gmail有几十个草稿,懒得清理,如果系统全面支持草稿,数量也不少。 对于传统mvc模式(由展示层输出HTML)下,直接序列化保存对象最省事,在ajax模式下则保存json更好,反正都是前台解析组装数据,恢复时再把json丢过去就行了。 |
|
返回顶楼 | |
发表时间:2009-07-31
bergman 写道 XML要编程的啊,每种表单不一样要分别处理,不如序列化来得省事
你没理解我的意思 |
|
返回顶楼 | |
发表时间:2009-08-01
直接保存为JSON或XML,最好是JSON,解析比较高效。在重新载入草稿编辑的时候载入JSON,然后根据不同的情况(字段不同)下的表单,从解析后的JSON中的对应字段找数据,找到就填充,否则就按默认值处理。
|
|
返回顶楼 | |
发表时间:2009-08-02
我的意见还是:对于传统mvc模式(由展示层输出HTML)下,直接序列化保存对象最省事(XML持久化也行),在ajax模式下则保存json更好,像ispring说的在恢复时把json丢过去就行了。
比较了一下java序列化和XML持久化(XMLEncoder和XMLDecoder),从性能上看,前者性能极佳,后者耗时是前者的3-8倍,越复杂的对象xml持久化越耗时(但仍比数据库快多了,数据库存取一个最简单的表要花序列化30-50倍的时间)。比起使用数据库,这点性能差异可以忽略不计。 XML持久化(XMLEncoder和XMLDecoder)只支持标准的javaBean,对于非标准的属性会丢弃,但也有优点,如果javaBean增加了新的属性重新编译了,原来保存的XML仍然能够正确还原。如果数据是标准的javaBean,用XML持久化是很好的方案。 而序列化在对java类修改并编译后,原来保存的序列化文件无法正确还原。但是序列化的通用性很强,任何实现了序列化接口的对象都可以正确序列和反序列化。 因此这两种方式各有利弊,都可以用,那么序列化文件或XML文件是保存文件系统还是数据库呢?保存文件系统尽管性能好,但不容易组织(有好的文件系统组织方式的资料吗?),还是放在数据库中吧。 |
|
返回顶楼 | |