Вопрос по java, dao, design-patterns, naming-conventions – Стандартное соглашение об именах для методов DAO

9

Существует ли стандартное соглашение об именах для методов DAO, подобное JavaBeans?

Например, одно соглашение об именовании I 'видел, чтобы использоватьget() вернуть одну сущность иfind() вернуть список лиц.

Если нетт один, чтоКто использует вашу команду и почему?

Ваш Ответ

2   ответа
17

Мне известны соглашения, подобные следующим:

  • методы, начинающиеся сfind выполнятьselect операции и имена методов, содержащие критерии поиска, например,findByIdfindByUsernamefindByFirstNameAndLastName, так далее.

  • Методы модификации начинаются с,.createupdatedelete

Проверьте соглашения, используемыеSpring Data JPA, Это является частью среды Spring, которая автоматически записывает DAO на основе, среди прочего, проверки имени метода на основе соглашений об именах.

get() для отдельных сущностей не кажется хорошим вариантом, так как разработчики Java ассоциируют get с геттером Java-bean-компонента.

Я согласился: найти намного лучше, чем получить (это всегда заставляет меня думать о добытчике). Также отлично, чтобы добавить критерии поиска в названиях методов. Jean-Philippe Caruana
Как насчет ситуаций, когда вы возвращаете F.Promise <SomeObject>? Будет ли ваше findByUsername стать findByUsernameAsync? Благодарю. Mule
10

Обычно я называю методы таким образом, что имя указывает на тип операции CRUD, которая будет применена методом, например,add*save* или же .find*

  • add* может применяться наINSERT операции, вроде.addPhoneNumber(Long userId)

  • get* может применяться дляSELECT операции, вроде.getEmailAddress(Long userId)

  • set* может применяться к методу, который выполняетUPDATE операция.

  • delete* может применяться наDELETE операции, какdeleteUser(Long userId), Хотя яЯ не совсем уверен, насколько полезным является физическое удаление. Лично я бы установил флаг, который означает, что строка не будет использоваться вместо физического удаления.

  • is* может быть применен к методу, который проверяет что-то, например.isUsernameAvailable(String username)

При переходе на уровень DAO мы не должны использовать то же наименование, что и в Model. Вместо 'получить' использоватьнаходить', вместо 'задавать' а также 'добавлять' использоватьОбновить', Также старайтесь быть более объектно-ориентированным, передавая объект модели, когда это возможно, особенно для обновления методов. Jordan Silva
Я также использую описательные имена в таких методах, как findAll *, чтобы добавить больше информации о намерениях Jean-Philippe Caruana

Похожие вопросы