我有一个从数据库中读取的Spring事务,如果找不到它,则会创建它。例如:
Isolation.SERIALIZABLE
如果同时调用此方法两次,则会导致两个不同的用户在数据库中使用相同的电子邮件(对于唯一的电子邮件没有限制,这仅用于说明目的)。
我希望第二个事务等待第一个事务,以便只创建一个用户。我已经尝试将事务隔离级别更改为synchronized
但它所做的只是使事务最后一次回滚。
修改
在任何人建议使用$(document).ready(function(){
$("#addFile").click(function() {
$("#my_file").click();
});
$("#my_file").change(function(e) {
var files = e.target.files;
for (var i = 0, f; f = files[i]; i++) {
ParseFile(f);
}
function ParseFile(file) {
var filename = file.name.replace(/\..+$/, '');
var filesize = file.size / 1024;
filesize = (Math.round((filesize / 1024) * 100) / 100);
var filetype = file.type.split('/').pop().toUpperCase();
if (filetype == 'PDF' || filetype == 'JPEG' || filetype == 'JPG' || filetype == 'PNG') {
$("#filedetails").append("<tr><td><strong>" + filename + "</strong></td><td>" + filesize + " MB</td><td>" + filetype + "</td><td><a href='#'>Delete</td></tr>");
}
else {
alert('Only JPG, PDF n PNG files are allowed to upload.');
}
}
});
});
或类似的东西在java中锁定解决方案之前,了解此方法是Web应用程序的一部分并在特定端点被命中时调用是很重要的。 Web应用程序在几台不同的计算机上运行,并且负载均衡,并且在同时调用两次端点时会出现问题。这意味着代码可以在两台不同的机器上并行执行,与另一台机器上的同一个DB通信。
答案 0 :(得分:1)
解决了咨询锁:
procedure TgboAmazon.MwsRequest(...; Response: TStream);
var
...
begin
...
AHTTP.Post(APath, AStream, Response);
...
end;
答案 1 :(得分:0)
您可以使用“锁定”表。它将包含您需要锁定的所有内容,即表名(例如“用户”)和行键(例如“email”)。
如果您需要更快的东西,那么您可以在服务器上使用memcached和复制。如果您的插入不多,那么db解决方案可能会没问题。