对面向对象的一点疑问,百思不得其解

学JAVA已经有五年了,当然,我现在已经不是一个职业程序员,但一直还是把JAVA当作自己的一项技能,时时用之。但是关于面向对象设计上有个问题一直弄不懂,特别是用HIBERNATE来做数据库操作时。所以向大家讨教。

问题是这样的:比如一个User类,记载了一个用户的信息,如姓名、年龄、性别等等。

假设有两个管理员同一时间段对某一个用户的资料进行修改,而且只改资料里面的某一项,其他项和进入修改页面时从数据库里读出来的一样。那么

1.A、B管理员都打开该用户的资料修改页面,这个时候,A、B管理员面前的修改页面是数据都是一样的。

2.A管理员改了“年龄”,B管理员“地址”。

3.A管理员保存更新,“年龄”这一项改变了,其他项和数据库里取出时一样。

4.B管理员也保存更新,“地址”这一项改变了,其他项和数据库里取出时一样。

这样的问题是,A管理员更新的“年龄”被B管理员的更新冲掉了,变成了原来的年龄。

这个问题在一些企业应用中还是经常会碰到的,特别是那些需要多人协同,负责采集一个对象的数据的情况。

我在GOOGLE里面也试过,修改自己的Gmail帐号信息,可是还是出现了数据被冲掉的现象。

我现在对这些问题都是采用JDBC直接进行单字段的setXX=?来解决,但是这样就不是OOD了。

也许对大家来说早就不是问题了,所以想向大家请教!

相关推荐