Chúng tôi có ba lớp trong ứng dụng của chúng tôi. Lớp dịch vụ để cung cấp API bên ngoài. Lớp BO cho logic nghiệp vụ của chúng tôi và lớp DAO cho kết nối cơ sở dữ liệu của chúng tôi.
Giả sử mỗi lần chúng tôi cập nhật Tệp, chúng tôi cũng muốn thay đổi một cái gì đó trong Thư mục, ví dụ: 'ngày sửa đổi lần cuối'. Điều này cần phải được thực hiện trong một giao dịch. Nó thành công và cả Tệp và Thư mục đều được chỉnh sửa. Hoặc có một thất bại và giao dịch được khôi phục để cả hai đối tượng đều ở trạng thái trước đó.
Hoạt động "Chỉnh sửa thư mục khi tệp được chỉnh sửa" hoàn toàn là logic kinh doanh. Vì vậy, điều này có nghĩa là nó thuộc về lớp BO. Tuy nhiên, chúng tôi sử dụng Objectify cho Cơ sở dữ liệu của chúng tôi, vì vậy để bắt đầu giao dịch, chúng tôi cần gọi ofy (). Giao dịch (...). Nếu chúng ta gọi hàm này trong lớp BO, điều này sẽ phá vỡ thiết kế của chúng ta vì sẽ có các cuộc gọi cụ thể Cơ sở dữ liệu (Objectify) trong lớp Business của chúng ta.
Điều gì sẽ là một giải pháp sạch cho vấn đề này?
FileBO
gọiFolderBO.edit(newDate)
vì vấn đề giao dịch?