DAO类方法命名

MCh*_*han 3 java spring-mvc

我正在使用Spring MVC,Hibernate构建一个小型Java Web应用程序,我对DAO类方法命名感到困惑.

例如,我有一个InvoiceDAO.java类,我认为应该包含以下方法:

Save(Invoice newInvoice);
Void(Invoice oldInvoice);
getInvoiceByID(Long invoideID);
Run Code Online (Sandbox Code Playgroud)

但我的老板说最佳实践说我应该在DAO类中有方法名称,如下所示:

add(Invoice newInvoice);
update(Invoice oldInvoice);
Run Code Online (Sandbox Code Playgroud)

这对我来说没有意义,因为我不确定如何将发票命名为更新?!!

那么有人可以指导我,并告诉我,我的方法命名是否错误?换句话说,我应该只使用add,update命名,或者我可以使用任何命名,仍然被视为最佳实践.

谢谢

dan*_*ter 8

取消发票是一项业务操作.我会说这种逻辑存在于你的服务层.您对发票进行更新以将其标记为无效,然后将其传递到数据层进行保存.

数据层应包含纯CRUD类型方法,即添加/保存/查找.

使用许多现代数据框架,您甚至不需要编写数据层...例如,请参阅http://blog.springsource.org/2011/02/10/getting-started-with-spring-data-jpa/


Cri*_*ses 7

前段时间我发现了关于DAO命名的这个故事......

根据功能命名

getData* 数据解析DAO内部使用的方法不使用此命名空间进行数据访问.

get* (例如getUsersByID)SELECT查询 - 鼓励您尝试根据单行或多行返回使用Singular或Plural中的名词.

set* (例如setActive)UPDATE查询

add* (例如addUser)INSERT查询 - 鼓励您尝试根据单行或多行插入使用Singular或Plural中的名词.

delete* (例如deleteUser)DELETE查询

is* (例如isActive)IF检查返回布尔值,即if($ user_dao-> isUserActive($ id))或if($ post_dao-> isPostInStorage($ id))

count* (例如countUsers)返回带有项目计数的整数.

保留功能

insert - 将对象作为参数,并将其插入表中.

save - 将对象作为参数,并将其中的数据存储回数据后端

poke - 将ID作为参数,"戳"记录(设置"最后一次看到"或现在的任何内容),返回更新计数(通常为1)

其他要记住的事情

由于存储后端可能是也可能不是"数据库",因此建议不要创建名称暗示后端使用数据库的方法.