1.action中的流程是这样的:
- 1.查询数据库字段field值为a的记录是否存在
- 2.若1存在,返回此记录,流程终止
- 3.若1不存在,new 一个对象,并写入数据库,并返回此对象,流程终止
但是数据库必须保证数据库字段field的值在数据库中不能有重复。
2 如果不做任何处理,当并发量大的时候,由于查询和写入之间存在时间差,所以会出现数据库字段field的值在数据库中有重复,这就实现不了需求
3,如果在action中加同步锁,如何加才能达到效率和需求的平衡,不能锁定整个action吧?
问题分析:
由于读操作的结果会影响写操作,所以此处读操作以及写操作必须放置于一个事务中,并且此事务不能被干扰,此问题有两种解决方案:
1.在action中,此两步操作时锁定一个静态对象
2.在数据库中,对field做索引,并设定为关键字,不允许重复,那么有重复时会报告给前台,并提醒用户不能重复