2013-12-07 166 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