有一点必须注重的就是多线程程序所带来的数据完整性问题。对于我们常使用的从数据库读取数据到对象中->修改对象属性->更新到数据库这个流程,非常轻易出现数据完整性破坏问题。比如一个进程中甲对象读取数据后,另一个进程中乙对象又修改了同一数据,这时甲对象再次更新数据库会带来污写。解决的办法是对象增加一个方法给数据库的这条记录加锁。例如Account.getByAccountId函数改为Account.getByAccountIdForUpdate,这个函数中相应的sql语句(Oracle数据库)改为"select AccountId,name from account where accountId=? for update",这样数据取出后就自动加锁,这个锁将会在事务提交或回滚时释放。for update在SQLServer相应的语法为holdlock。