2013-12-07 10 views
9

Gibt es eine Standardbenennungskonvention für DAO-Methoden, ähnlich JavaBeans?Standardnamenskonvention für DAO-Methoden

Zum Beispiel ist eine Namenskonvention, die ich gesehen habe, get() zu verwenden, um eine einzelne Entität zurückzugeben, und find(), um eine Liste von Entitäten zurückzugeben.

Wenn es keinen gibt, welcher ist Ihr Team und warum?

Antwort

10

Normalerweise benenne ich die Methoden so, dass der Name den Typ der CRUD-Operation angibt, die von der Methode angewendet wird, wie add*, save* oder find*.

  • add* auf INSERT Operationen angewendet werden, wie addPhoneNumber(Long userId).

  • get* kann für SELECT Operationen, wie getEmailAddress(Long userId) angewendet werden.

  • set* kann auf eine Methode angewendet werden, die eine UPDATE Operation ausführt.

  • delete* kann auf DELETE Operationen angewendet werden, wie deleteUser(Long userId). Obwohl ich nicht sicher bin, wie nützlich das physische Löschen ist. Persönlich würde ich ein Flag setzen, das anzeigt, dass die Zeile nicht verwendet wird, anstatt ein physisches Löschen durchzuführen.

  • is* kann auf eine Methode angewendet werden, die etwas überprüfen, zum Beispiel isUsernameAvailable(String username).

+0

Ich benutze auch beschreibende Namen für Methoden wie findAll *, um weitere Intent-Informationen hinzuzufügen –

+1

Wenn wir zur DAO-Ebene gehen, sollten wir nicht die gleichen Namen wie in Model verwenden. Anstatt 'get' zu benutzen 'find', anstatt 'set' und 'add' zu verwenden 'update'. Versuchen Sie außerdem, objektorientierter zu sein, indem Sie das Modellobjekt nach Möglichkeit passieren, insbesondere um Methoden zu aktualisieren. –

17

Ich bin mir dessen bewusst Konventionen wie die folgenden:

  • Methoden mit findselect Operationen durchführen Starten und Methodennamen enthält den Suchkriterien, wie findById, findByUsername, findByFirstNameAndLastName usw.

  • Modifikationsmethoden beginnen mit create, update, delete.

Überprüfen Sie die Konventionen von Spring Data JPA. Dies ist Teil des Spring-Frameworks, das die DAOs automatisch unter anderem basierend auf Namenskonventionen basierend auf der Überprüfung des Methodennamens schreibt.

get() für einzelne Entitäten scheint keine gute Option zu sein, da get von Java-Entwicklern zu einem Java-Bean-Getter zugeordnet wird.

+1

viel einverstanden: Finden ist viel besser als bekommen (es bringt mich immer an einen Getter denken). Auch hervorragend zum Hinzufügen von Suchkriterien in den Methodennamen. –

+0

Was ist mit Situationen, in denen Sie eine F.Promise zurückgeben? Würde Ihr findByUsername findByUsernameAsync werden? Vielen Dank. – Mule