به نظر من تراکنش باید در لایه سرویس باشه. چون ممکنه در یک تراکنش از دو DAO استفاده بشه.مثلا:
@Service
@Transactional
public class UserService {
@Autowired
private UserDAO userDAO;
@Autowired
private ProfileDAO profileDAO;
public registerUser(User user) {
// Two operation must complete together.
profileDAO.save(user.getProfile);
userDAO.save(user);
}
}