Общий вопрос на том, что общее мнение находится на хранении SQL-запросов в конфигурационном файле?
Это - просто другой гараж для велосипедов?
С наилучшими пожеланиями, Ben
Нет. Никогда. Серьезно ;) Убираю это здесь в данный момент.
Попробуйте посмотреть на BLToolkit - хранит их в атрибутах прямо на абстрактном классе, под который они динамически генерируют весь код доступа. То же самое, что использовать их в конфигурационном файле, но без написания или просмотра глупого кода DAL.
Это то, что вы бы сделали, если бы использовали iBatis. Я не вижу в этом вреда.
Это лучше, чем их динамическое наращивание, когда в этом нет необходимости.
Каковы ваши аргументы для размещения их где-либо, кроме кода? Я обнаружил, что чаще всего SQL изменяется с той же скоростью, что и ваш код, а это означает, что если вы измените UserDao.java вам, вероятно, придется изменить sql-statements.properties одновременно. С учетом сказанного, код читается гораздо больше раз, чем написан, поэтому написание читаемого кода имеет решающее значение в чистой кодовой базе. С операторами SQL в отдельном файле разработчик должен искать в другом месте, чтобы выяснить, какой запрос использует ваш UserDao, что затрудняет понимание вашего кода.
Короткий ответ? Я бы избегал этого, если это возможно.
В таком случае я бы хранил их в базе данных:
Но на самом деле, я экстраполирую, не зная вашего реального сценария. Но если говорить прямо, я бы не хотел, чтобы другие видели, как я взаимодействую со своей схемой или как она устроена.
Мне кажется, это не так уж плохо, при условии, что он соответствует требованиям.
Вы пытаетесь разрешить покупателю просматривать и редактировать запросы?
Вы пытаетесь упростить разработку / тестирование?
Я определенно предпочитаю это встраиванию запросов в код.
Но есть риск, что этот файл будет раздуться множеством немного разных запросов (SORT ASCENDING, SORT DESCENDING, SUM (col1) + SUM (col2), SUM (col1) + SUM (col3) и т. Д.)