2013-05-27 5 views
0

Я пытаюсь получить это ответило, и нашел один комментарий в документации MyBatis:MyBatis - Mapper против DAO

Обычно MapperFactoryBean предпочтительно этот класс, так как не требует никакого дополнительного кода. Но этот класс (DAO) полезен, если вам нужно сделать другой без MyBatis работы в вашем DAO и конкретные классы необходимы и использовать SqlSessionDaoSupport или SqlSessionFactory

В случае, если я решил использовать MapperFactoryBean сегодня в моем проекте , но позже мне нужно будет использовать concrete DAO (может быть, потому что вы не можете делать 100% с использованием SQL в Mapper), тогда мне нужно изменить дизайн.

Если вышесказанное верно, то MapperFactoryBean будет очень менее полезным и никогда не будет (или главным образом) выбором.

Другими словами: Может ли MapperFactoryBean и DAO сосуществовать? Даже если да, должны ли они быть?

+0

Почему вы так думаете? И в чем ваш вопрос? – Kai

+0

Мои вопросы: В случае, если я использую Mapper, и мне нужно будет создать динамический SQL (который может меня за пределами MyBatis Support), я бы использовал DAO. Итак, почему бы не использовать DAO как выбор дизайна на первом месте, даже если у вас есть небольшие шансы на то, что у вас есть требование? –

ответ

1

Знаете ли вы о том, что это «не-MyBatis работы» или «некоторый динамический SQL» как вы называете это именно? Ну, я не. Но предполагая, что пишущие Mappers намного быстрее и интуитивно понятны для ваших разработчиков, вы сохраняете много времени здесь. И когда есть какие-то страшные вещи, не связанные с MyBatis, почему бы не написать тогда очень специфический DAO, который делает только эту вещь, отличную от MyBatis?

+0

Почему бы не написать DAO (в случае, если вы хотите страшный non-MyBatis), так это то, что мне нужно изменить всю услугу, чтобы перейти на DAO вместо существующего mapper. –

+0

@SandeepJindal Нет, я говорю, что они могут существовать рядом друг с другом. – Kai

+0

Правильно, наверное, это правильный вопрос: «Может ли MapperFactoryBean и DAO сосуществовать? Даже если да, должны ли они быть?» Я также обновил этот вопрос. –

0

+1 для сосуществования (DAO не обязательно!) Это особенно актуально, если вы используете mybatis в весеннем каркасе.

Что касается рефакторинга, хорошо, если у вас есть встроенная платформа для тестирования.

Смежные вопросы