2013-12-07 168 views
9

DAO方法是否有标准命名约定,类似于JavaBeans?DAO方法的标准命名约定

例如,我见过的一个命名约定是使用get()返回单个实体,find()返回实体列表。

如果没有,你的团队使用的是什么?为什么?

回答

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)

+0

我personnaly还使用findAll *等方法上的描述性名称来添加更多的意图信息 –

+1

去DAO层时,我们不应该使用与模型中相同的命名。而不是'get'使用'find',而不是'set'和'add'使用'update'。尽可能地尝试更多的面向对象传递模型对象,特别是更新方法。 –

17

我知道公约的类似如下:

  • 开始find方法执行select操作和方法的名称包含搜索条件,如findByIdfindByUsernamefindByFirstNameAndLastName

  • 修改方法以create,update,delete开头。

查看Spring Data JPA使用的约定。这是Spring框架的一部分,该框架根据基于命名约定检查方法名称来自动编写DAO。

get()对于单个实体似乎不是一个好选择,因为get是Java开发人员与Java bean getter相关联的。

+1

非常赞同:发现比获得更好(它总是让我想到一个吸气剂)。也非常适合在方法名称中添加搜索条件。 –

+0

你要退回F.Promise 的情况如何?你的findByUsername会变成findByUsernameAsync吗?谢谢。 – Mule