При использовании SQL Alchemy для абстрагирования уровня доступа к данным и использования контроллеров в качестве способа доступа к объектам из этого уровня абстракции, как следует обрабатывать объединения?
Так, например, скажем, у вас есть класс контроллера Ordersон управляет объектами Order таким образом, что предоставляет методы getOrder, saveOrder и т. д., а также аналогичный контроллер для объектов User.
Прежде всего, вам даже нужны эти контроллеры?Если вместо этого вы просто относитесь к SQL Alchemy как к «тому», который обрабатывает доступ к данным.Зачем беспокоиться об объектно-ориентированном контроллере, когда вместо этого у вас есть чистый декларативный способ получения и сохранения объектов без необходимости писать SQL напрямую.
Ну, одна из причин может заключаться в том, что, возможно, вы захотите заменить SQL Alchemy на прямой SQL или Storm или что-то еще.Таким образом, наличие там классов контроллеров в качестве промежуточного уровня помогает ограничить то, что необходимо изменить.
В любом случае - вернемся к основному вопросу - поэтому, предположив, что у вас есть эти два контроллера, теперь допустим, что вы хотите получить список заказов для определенного набора пользователей, отвечающих некоторым критериям.Как ты это делаешь?Обычно вы не хотите, чтобы контроллеры пересекали домены - контроллеры Orders знают только о заказах, а пользовательский контроллер - только о пользователях - они не связываются друг с другом.Вы также не хотите извлекать всех подходящих пользователей, а затем отправлять большой список идентификаторов пользователей в контроллер Orders, чтобы найти соответствующие Orders.
Требуется соединение.Вот где я застрял - похоже, это означает, что либо контроллеры должны пересекать домены, либо, возможно, они должны быть полностью уничтожены, и вы просто выполняете объединение напрямую через SQL Alchemy и получаете получившиеся объекты User и / или Order по мере необходимости.Мысли?