我有一个用Java、Spring、Hibernate、Postgres编写的应用程序。
它跟踪用户的登录尝试。如果用户在不到1小时内有超过5次来自同一IP地址的无效尝试,则此IP地址将被阻止。
我有以下实体类,用于存储有关登录尝试的信息:
@Entity
public class BlockedIp {
private String ipAddress;
private Date blockDate;
private Date unblockDate;
private Date lastAttemptDate;
private Integer wrongAttemptsCount;
...}
我正在编写一个工作流Spring应用程序,其中两个人可以读取和更新相同的数据。我想用Spring来处理写-写冲突。
例如,price=1000的初始值;用户A和B从数据库读取价格。现在,用户B将价格值更新为price=1500。几秒钟后,用户A将价格更新为price=2000 --这将引发一个异常,因为用户A试图写入(更新)用户B已经更新的值。
目前,我已经在Spring中用version注释标记了列@Version。但是我不知道如何在更新的时候使用它。
以下是我的密码。
实体类
@Entity
class Product{
@Version
private int ver
我有这样一个实体:
@Entity
@Table(name = "PERSON_TB") {
public class Person implements Serializable {
private static final long serialVersionUID = 3433ba34234aL;
@Id
@Column(name = "ID")
private Long personId;
@Column(name = "NAME"
我正在使用和为web服务开发REST API;服务器端的数据是使用和处理的。web服务器是使用的,它被配置为运行多个Python进程:
[uwsgi]
socket = localhost:6542
plugins = python34
...
processes = 2 # spawn the specified number of workers/processes
threads = 2 # run each worker in prethreaded mode with the specified number of threads
Problem
假设服务器端有一个表customer
SQL Server不支持NHibernate用于悲观锁定的"SELECT FOR UPDATE“语法。我阅读了其他选择的描述(我喜欢"SELECT WITH (...)“因为它非常接近)。
但是,NHibernate似乎不支持这种语法。
你有解决这个问题的办法吗?我相信这可以通过修补NHibernate的内部实现,但这对我来说并不划算(学习曲线)。我还可以使用带有应用程序锁的存储过程,并从NHibernate访问它。还有其他建议吗?(除了总是在写作之前阅读之外……)