DAO 方法的标准命名约定
Posted
技术标签:
【中文标题】DAO 方法的标准命名约定【英文标题】:Standard Naming Convention for DAO Methods 【发布时间】:2013-12-25 04:51:16 【问题描述】:DAO 方法是否有标准命名约定,类似于 JavaBeans?
例如,我见过的一种命名约定是使用 get()
返回单个实体,使用 find()
返回实体列表。
如果没有,您的团队正在使用什么?为什么?
【问题讨论】:
【参考方案1】:我知道以下约定:
以find
开头的方法执行select
操作,方法名称包含搜索条件,如findById
、findByUsername
、findByFirstNameAndLastName
等。
修改方法以create
、update
、delete
开头。
查看Spring Data JPA 使用的约定。这是 Spring 框架的一部分,它根据命名约定对方法名称的检查等自动编写 DAO。
get()
用于单个实体似乎不是一个好的选择,因为 Java 开发人员将 get 关联到 Java-bean getter。
【讨论】:
非常同意:find 比 get 好得多(它总是让我想到一个 getter)。在方法名称中添加搜索条件也非常好。 返回 F.Promise通常我以这样的方式命名方法,以便名称暗示该方法将应用的 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)
。
【讨论】:
我个人也会在 findAll* 等方法上使用描述性名称来添加更多意图信息 在进入DAO层时,我们不应该使用与Model中相同的命名。使用“查找”代替“获取”,使用“更新”代替“设置”和“添加”。在可能的情况下,还要尝试更多地面向对象传递模型对象,特别是更新方法。以上是关于DAO 方法的标准命名约定的主要内容,如果未能解决你的问题,请参考以下文章