Temos três camadas em nossa aplicação. Camada de serviço para fornecer uma API externa. Camada BO para nossa lógica de negócios e uma camada DAO para nossa conexão com o banco de dados.
Digamos que toda vez que atualizamos um arquivo, também queremos alterar algo na pasta, por exemplo 'data da última modificação'. Isso precisa ser feito em uma transação. Ou é bem-sucedido e o Arquivo e a Pasta são editados. Ou há uma falha e a transação é revertida para que ambos os objetos estejam no estado anterior.
A ação "Editar uma pasta quando um arquivo é editado" é uma lógica puramente comercial. Então isso significa que ele pertence à camada BO. No entanto, usamos o Objectify em nosso banco de dados, portanto, para iniciar uma transação, precisamos chamar ofy (). Transact (...). Se chamarmos essa função na camada BO, isso interromperá nosso design, pois haverá chamadas específicas do banco de dados (Objectify) em nossa camada Business.
Qual seria uma solução limpa para esse problema?
FileBO
ligarFolderBO.edit(newDate)
devido ao problema da transação?