代码之家  ›  专栏  ›  技术社区  ›  Steve

JPA从多进程写入单个数据库

  •  1
  • Steve  · 技术社区  · 16 年前

    所以,我有一个设计问题:我有几个正在运行的进程正在更新我的数据库。举个例子,想象一个银行系统,我正在记录从一个账户到另一个账户的转账。在这种情况下,我必须从源账户中减去转账金额,并将相同的金额作为一笔交易记入目标账户。

    我想绝对确保我的交易不会被破坏,所以我最初考虑在计算和提交更改时悲观锁定源和目标帐户。从我在网上读到的关于JPA的信息来看,悲观锁定似乎不容易得到支持(至少不是直接支持)。

    有人能告诉我其他方法,我可以确保我在多个流程中的交易的完整性吗?

    非常感谢任何帮助/建议。

    --Steve

    1 回复  |  直到 16 年前
        1
  •  2
  •   Michael Barker    16 年前

    @Entity
    public class Account {
    
        @Id
        private long id;
    
        @Version
        private long version;
    
        @Basic
        private BigDecimal balance;
    }
    

    不幸的是,这个问题没有单一的解决方案,最简单的方法是重新加载两个帐户并重试交易,如果你没有太多的交易同时访问同一个帐户,这将很好地工作。在这种情况下,您可能会遇到一些问题,一些请求将大部分时间花在重试事务上,但最好从简单的解决方案开始,然后根据应用程序的需要更改实现。