DAO 方法的标准命名约定

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

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

如果没有,您的团队正在使用什么,为什么?


答案 1

我知道如下约定:

  • 以执行操作和包含搜索条件的方法名称(如 、 、 等)开始的方法。findselectfindByIdfindByUsernamefindByFirstNameAndLastName

  • 修改方法以 、 、 开头。createupdatedelete

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

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


答案 2

通常,我以这样的方式命名方法,即名称提示将由该方法应用的CRUD操作的类型,例如,或。add*save*find*

  • add*可以应用于操作,如 .INSERTaddPhoneNumber(Long userId)

  • get*可以应用于操作,如 .SELECTgetEmailAddress(Long userId)

  • set*可以应用于执行操作的方法。UPDATE

  • delete*可以应用于操作,如 .虽然我不太确定物理删除有多大用处。就个人而言,我会设置一个标志,表示不会使用该行,而不是执行物理删除。DELETEdeleteUser(Long userId)

  • is*可以应用于检查某些内容的方法,例如 。isUsernameAvailable(String username)