DAO方法的标准命名约定
是否存在DAO方法的标准命名约定,类似于JavaBeans?
例如,我看到的一个命名约定是使用get()
返回单个实体而find()
返回实体List。
如果没有,你的团队使用的是什么?为什么?
通常我会以这样的方式命名方法,即名称提示将由方法应用的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)
。
我知道如下的约定:
-
以
find
开头的方法执行select
操作,以及包含搜索条件的方法名称,如findById
,findByUsername
,findByFirstNameAndLastName
等。 -
修改方法以
create
,update
,delete
开头。
查看Spring Data JPA使用的约定。 这是Spring框架的一部分,它根据命名约定检查方法名称,自动编写DAO。
单个实体的get()
似乎不是一个好的选择,因为Java开发人员将get关联到Java-bean getter。