webservice传 PO 对象问题

ghcbahellen 2010-06-09 05:16:55
现在要做的功能是:两个数据库之间的数据传输

场景假设:

客户端将数据库用户A的table_1中数据,通过 WS 传给服务端,服务端将数据写入数据库用户B的table_2中,之间的传输是通过PO对象来做的。

当数据发送到服务端后,服务端会对数据库B的表table_2的数据进行相应 更新/插入/删除操作。
操作的不同通过数据是否最新(时间字段的比较)和数据本身带着的操作类型(action字段)来判断。

问题来了:
我想判断 客户端传过去的PO对象 是否影响了服务端数据库用户B中的数据?

目前使用的方法是:
服务端对数据进行处理后。将这条数据转为PO对象,返回其hashcode(),客户端通过这个返回值与传过去对象的hashcode()进行比较,如果相同,说明客户端的数据影响了服务端的数据,则更新客户端的数据(标识成功)

我将PO对象的hashcode() 重写了,值相同时hashcode相同。




-----------这样做合理么?或者有其他好的办法?
...全文
117 点赞 收藏 21
写回复
21 条回复
ghcbahellen 2010年06月11日
顶一下 大家来回答啊~!!!!
回复 点赞
ghcbahellen 2010年06月10日
[Quote=引用 16 楼 dr_lou 的回复:]
如果只是比较PO的属性是否一致,重写equals方法是否可行?
[/Quote]


----对成功影响服务端数据的客户端数据进行标识 考虑到减轻服务端的压力,将部分校验工作放在客户端进行。如果比较操作在服务端做,重写equals应该就可以了。如果在客户端做校验,hashcode可不可靠。
已经谈到点子上了~!!
回复 点赞
dr_lou 2010年06月10日
如果只是比较PO的属性是否一致,重写equals方法是否可行?
回复 点赞
ghcbahellen 2010年06月10日
事实上,服务端的数据库在代码级做了Update或Insert操作。未必会真正的改变数据库值
最保险的办法是,将数据库中的值给select出来,取数据的摘要和客户端的进行比较。我这里重写对象的hashcode,不清楚这样做合不合理。
回复 点赞
ghcbahellen 2010年06月10日
[Quote=引用 13 楼 dr_lou 的回复:]
引用 11 楼 ghcbahellen 的回复:
引用 10 楼 dr_lou 的回复:
就好比同一笔数据的两次操作,当然是记录最新的数据了。

时间戳? 糊涂了。



------这个不用深究了。。。反正服务端会有办法判断客户端的数据是否要更新到本地,看看我的问题吧。。。服务端更新之后,要让客户端知道自己传过去的数据起了效果。就是这个要求~


如果更新会瞬时完成,可以让……
[/Quote]


------还是没到点上~。。~ 现在主要问题是数据是否起了作用....用什么比较服务端的数据被客户端这次传输的数据改变。。(前面说过,客户端的数据可能到了服务端只作为无效数据,不做任何处理)
回复 点赞
dr_lou 2010年06月10日
[Quote=引用 11 楼 ghcbahellen 的回复:]
引用 10 楼 dr_lou 的回复:
就好比同一笔数据的两次操作,当然是记录最新的数据了。

时间戳? 糊涂了。



------这个不用深究了。。。反正服务端会有办法判断客户端的数据是否要更新到本地,看看我的问题吧。。。服务端更新之后,要让客户端知道自己传过去的数据起了效果。就是这个要求~
[/Quote]

如果更新会瞬时完成,可以让客户端等待结果。
如果耗时,用异步式,比如客户端留一个接口,服务端操作完后通知。
要不就客户端提交请求后,定时轮询。
回复 点赞
ghcbahellen 2010年06月10日
自己顶一下~
回复 点赞
ghcbahellen 2010年06月10日
[Quote=引用 10 楼 dr_lou 的回复:]
就好比同一笔数据的两次操作,当然是记录最新的数据了。

时间戳? 糊涂了。
[/Quote]


------这个不用深究了。。。反正服务端会有办法判断客户端的数据是否要更新到本地,看看我的问题吧。。。服务端更新之后,要让客户端知道自己传过去的数据起了效果。就是这个要求~
回复 点赞
ghcbahellen 2010年06月10日
我顶~我顶~我顶顶顶!!
回复 点赞
ghcbahellen 2010年06月10日
顶一个~!
回复 点赞
webservice不是很熟悉
回复 点赞
dr_lou 2010年06月09日
就好比同一笔数据的两次操作,当然是记录最新的数据了。

时间戳? 糊涂了。
回复 点赞
ghcbahellen 2010年06月09日
[Quote=引用 8 楼 dr_lou 的回复:]
引用 5 楼 ghcbahellen 的回复:
引用 4 楼 dr_lou 的回复:
我想判断 客户端传过去的PO对象 是否影响了服务端数据库用户B中的数据?
不太懂啊?

传来的PO与服务端数据库中的内容不同,是否叫影响?





客户端传过去的PO 是想要 体现到服务端数据库中的。如果服务端处理后 内容与传过去的PO不一致,说明此次操作未影响


服务端处理后与P……
[/Quote]



-----不是异常,传过去的数据有,无效和有效之分:就好比同一笔数据的两次操作,当然是记录最新的数据了,那旧数据传过去就属于无效操作了,那这条旧数据自然不影响服务端的结果
回复 点赞
dr_lou 2010年06月09日
[Quote=引用 5 楼 ghcbahellen 的回复:]
引用 4 楼 dr_lou 的回复:
我想判断 客户端传过去的PO对象 是否影响了服务端数据库用户B中的数据?
不太懂啊?

传来的PO与服务端数据库中的内容不同,是否叫影响?





客户端传过去的PO 是想要 体现到服务端数据库中的。如果服务端处理后 内容与传过去的PO不一致,说明此次操作未影响
[/Quote]

服务端处理后与PO不一致了,不就是数据库操作异常了么?是这个意思么?
回复 点赞
ghcbahellen 2010年06月09日
[Quote=引用 6 楼 zliu789 的回复:]
我想判断 客户端传过去的PO对象 是否影响了服务端数据库用户B中的数据?
不太懂啊?
[/Quote]



。。。。。。
客户端传过去的PO 是想要 体现到服务端数据库中的。如果服务端处理后 内容与传过去的PO不一致,说明此次操作未影响
回复 点赞
老黄瓜_ 2010年06月09日
我想判断 客户端传过去的PO对象 是否影响了服务端数据库用户B中的数据?
不太懂啊?
回复 点赞
ghcbahellen 2010年06月09日
[Quote=引用 4 楼 dr_lou 的回复:]
我想判断 客户端传过去的PO对象 是否影响了服务端数据库用户B中的数据?
不太懂啊?

传来的PO与服务端数据库中的内容不同,是否叫影响?
[/Quote]




客户端传过去的PO 是想要 体现到服务端数据库中的。如果服务端处理后 内容与传过去的PO不一致,说明此次操作未影响
回复 点赞
dr_lou 2010年06月09日
我想判断 客户端传过去的PO对象 是否影响了服务端数据库用户B中的数据?
不太懂啊?

传来的PO与服务端数据库中的内容不同,是否叫影响?
回复 点赞
ghcbahellen 2010年06月09日
[Quote=引用 2 楼 youanyyou 的回复:]
PO对象的hashcode() 重写了,值相同时hashcode相同。

webservice 楼主这样做也是可行的
[/Quote]


hashcode() 这么用 可靠么?
还有Webservice用来做数据交换,效率可行?听说WS的效率不怎么样(自己没体会到~。。~)
回复 点赞
Java技术栈 2010年06月09日
PO对象的hashcode() 重写了,值相同时hashcode相同。

webservice 楼主这样做也是可行的
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告