我正在尝试找出在对象级别(而不是数据库级别)处理事务的最佳方法.简短示例:4个对象A,B,C和D. A启动事务并调用B和C中的方法.在此事务中C也调用D.被调用的方法不应该总是参与此事务,而是也可以自己打电话.是否有任何模式来管理对象级别的事务?
我没有找到任何东西,所以我提出了这个:使用TransactionContext,其中可以注册TransactionListeners.如果使用TransactionContext启动事务,则它会将正在运行的事务注入每个已注册的侦听器,而这些侦听器将使用正在运行的事务,否则将根据需要自行启动一个事务.通过这种方式,我可以自由决定是否需要参与我的交易的对象.
当拥有如上所述的对象调用链时会出现问题.在启动事务时,我只知道B和C必须参与事务,因此我将它们添加到TransactionContext中.但D怎么样?我真的不想将TransactionContext传递给B和C.
我会很感激我的方法的一些输入以及对已证实的模式的一些指示(甚至更好).