|
![]() |
#1 |
Участник
|
Никак.
В оригинале было про "чистые" SQL запросы и объектно ориентированный подход Цитата:
Примерный вид решения на SQL:
SQLObject object = executeQuery ( "SELECT u.name user_name, dep.name dep_name/n" + "FROM USERS u, DEPARTMENTS dep/n" + " AND u.user_id = ?/n" + " AND u.department_id = dep.department_id", userID ) Примерный вид решения с использованием API: User user = new User(userID); Department department = user.getDepartment(); В чем преимущества первого решения: оно работает быстрее второго. В чем преимущество второго: оно более воспринимаемо человеком, и его намного легче поддерживать. Конечно, если этот код вызывается очень часто или разница во времени выполнения слишком большая, то следует использовать первый вариант. Во всех остальных случаях лучше взять второй, т. к. нужно думать о людях, а не о выигрыше миллисекунд. |
|
![]() |
#2 |
Участник
|
У него же всё равно в getDepartment этот sql запрос сидит или в конструкторе new.
Просто постановку вопроса нужно подругому ставить. Писать ли класс оболочку для этого запроса или нет? Нет не писать. А вот класс оболочку для таблиц user и departament писать нужно. Может и не одну. Если это важные таблицы. В идеале даже если не важные, но в реале так не бывает. В Axapte много место где под таблицы создаются два класса. Первый для некой выборки экземпляров какой-нибудь сущности и сохранения их для последующего пользования без повторного запроса, второй для работы с одним экземпляром этой сущности. |
|
![]() |
#3 |
Участник
|
Цитата:
Почему это? Он и рассуждает на тему - писать запросы или пользоваться оболочками (возможно, не "оптимальными" в каждом конкретном случае) |
|
![]() |
#4 |
Участник
|
Цитата:
Тогда наверное всё зависит от количества записей. При малых объёмах полюбому второй подход. При больших первый. Тут уж выбирать не приходиться, когда тормоза пошли. Сложно сказать. Я бы не стал. Лучше бы нашёл класс который наиболее всего представляет данные таблицы и повесел бы статическим методом. |
|