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