java获取数据时重复

问题描述

有一个对象User(对应数据库中t_user表),User有一个字段code.现在有一个方法edit(),edit方法每次通过User的code值来生成新的code值,就是说,如果现在数据库中code的最大值为10,那么edit方法新增一个User对象,这个User对象的code值为11,然后将新的User对象保存。现在的问题是如果多个用户同时执行到edit方法,会导致User记录的code 值重复,应该怎么解决??(获取code的最新值有一个特定方法:getNextCode)

解决方案

edit方法同步
解决方案二:
真是给楼主跪了。。有很多地方可以来保证Code的唯一,选了范围最大的一个直接加同步
解决方案三:
可能的解决方法有1、使用数据库中的序列来给code赋值2、使用synchronized,或者lock将共享的数据同步3、可以使用Concurrent 包中的 BlockingQueue来缓存一些code值,BlockingQueue能很好的在多线程中传递数据。实现:1、在数据库中建立序列,通过getNextCode来获取序列的值,因为序列式自增长的,所以支部会重复。这种效率会慢一点,因为你要不断的访问数据库来获取序列的值2、为getNextCode加上同步锁, synchronized getNextCode()或者 getNextCode(){ .... lock(); //获取共享数据的代码块 unlock(); .... }3、BlockingQueue<String> queue = new LikedBlockQueue<String>(queueSize);//初始化队列中的数据for(int i=0;i<queueSize;i++) queue.offer(getNextCode());当然上边的方法还有很多的写法,你可以自己决定使用什么样的实现
解决方案四:
重复的值是指执行更新的时候却执行了插入吗?
解决方案五:
至少有2种方式你可以尝试1 getNextCode这里加锁2 可以使用类似hibernate中的乐观锁

时间: 2024-09-26 12:21:16

java获取数据时重复的相关文章

使用MS Enterprise Library的DAAB获取数据时抛出异常

开门见山,使用MS Enterprise Library的DAAB(Data Access Application Block)获取 数据时抛出异常.具体场景如下,通过Database对象的ExecuteReader执行两段Select语句, 前一句是不合法的,后一句是正确的.为了避免第一次执行出错导致程序的终止,特意将其 放到Try/Catch酷快中.两次数据库操作通过TrsanctionScope的形式纳入同一个Transaction 中,具体的代码如下所示. class Program {

解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)

本篇文章是对php中使用异步调用获取数据时出现(由于出现错误c00ce56e而导致此项操作无法完成)的解决方法进行了详细的分析介绍,需要的朋友参考下   [详细错误]:由于出现错误 c00ce56e 而导致此项操作无法完成 [造成原因]:未指定输出编码格式. [解决办法]:句首加入header("content-type:text/html; charset=UTF-8");  

安卓开发获取数据的url

问题描述 安卓开发获取数据的url 请问各位安卓开发 从网上获取数据时 怎么知道url 比如我想开发一个健康食谱 怎么知道他的url借口是多少啊 小白求助 解决方案 Java URL获取数据的方式java 访问url获取数据并解析 解决方案二: 那你得去找市面上有没有开放出来的接口.或者你有这么厉害去反编译相应的APP也能拿到接口

JS获取年月日时分秒的方法分析_javascript技巧

本文实例分析了JS获取年月日时分秒的方法.分享给大家供大家参考,具体如下: var d = new Date(); var time = d.getFullYear() + "-" +(d.getMonth()+1) + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); 必须这么繁杂,没

jquery ajax-jQuery ajax获取数据问题

问题描述 jQuery ajax获取数据问题 程序片段如下: var data_1; $.post("getdata.php",function(string_1){ data_1 = string_1; });为什么string_1的内容无法被获取呢?_ 要想获取其内容,应该如何做呢?麻烦指点下! getdata.php: <?php_ $con = mysql_connect('localhost','root'); mysql_select_db('my_db',$con)

java 获取ResultSet记录行与列实现程序

获取ResultSet记录列数核心代码    代码如下 复制代码 ResultSetMetaData rsmd = this.rs.getMetaData(); this.columnCount = rsmd.getColumnCount(); java获取数据行数的代码如下:  代码如下 复制代码 Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)

从excel表中获取数据

问题描述 我想问问,通过vb.net从excel表获取数据时,其中excel表中有空值,而vb通过excel.rang().value获取值时显示未将对象实例引用,而excel中必须有空值,怎么解决 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html此次调整增加了两个新的可用分获取渠道:1:帖子

node.js下IE中获取数据的缓存

IE下默认会开启缓存策略,不管是页面还是通过ajax请求的数据都会议一个url,url是uri(统一资源定位符)的实例,url就是资源的标识符. 写一个demo进行验证,测试环境:IE8,node.js 0.12.7,页面模板为jade.  页面代码:testCache.jade 页面上放一个按钮,点下后从后台获取一个自增的数值显示在按钮上. doctype htmlhtml    head        meta(charset='utf-8')        title= title    

关于绑定点击提交AJAX,获取数据的事件重复执行的问题

问题描述 关于绑定点击提交AJAX,获取数据的getJSONData事件重复执行,而且执行的次数还累加,参数在A标签这几个值里乱变这里上代码://加载列表数据,获取JSON数据functiongetJSONData(pn,canshu){$.ajax({type:"get",url:"ajax/Handler.ashx?time="+newDate().getTime(),data:{tj1:canshu,change:"change"},asy