我正在制作银行应用程序,但无法决定哪种方法是处理资金转账交易的更好方法。如果数据库发生变化,使用 SQL 可能需要重写代码。使用纯 Java 来处理在锁定交易帐户方面会稍微复杂一些。这种情况的最佳实践是什么?
PS - 在这种情况下,请考虑使用分布式应用程序服务器。
问问题
875 次
2 回答
1
任何在硬崩溃时使数据库处于可能不一致状态的应用程序都不适合银行使用。利用所谓的“Java 事务”的应用程序是该组的一部分。
任何严肃的银行应用程序都会将所有写入过程封装到服务器端封装(读取:存储过程)中,并且不允许对任何表进行任何写入访问。读取访问将由存储过程和视图的混合提供。
与防崩溃的 RDBMS 一起,这保证了对作业的全有或全无处理。
于 2014-10-12T16:21:07.327 回答
1
所有参与的资源(包括您的数据库以及任何其他端点或中间件)也必须加入同一事务。事务不是在组件边界处结束的任何事物,它跨越系统中所有涉及的组件。否则,就没有交易。应该有一个驱动组件,通常是您自己的代码或一些中间件,它启动并提交/回滚事务。其他任何人都可以加入。他们对事务的想法是,如果发生故障,则反转所有相关组件的操作(并将已经发生的操作隐藏给事务之外的任何人,直到它成功提交)。我的回答是:您需要数据库和应用程序级别的事务,因为事务涉及所有参与的组件。
于 2014-10-12T16:38:17.663 回答