3

Spring MVC、Hibernate を使用して小さな Java Web アプリケーションを構築していますが、DAO クラスのメソッドの命名について混乱しています。

たとえば、次のメソッドを含める必要があると考えた InvoiceDAO.java クラスがあります。

Save(Invoice newInvoice);
Void(Invoice oldInvoice);
getInvoiceByID(Long invoideID);

しかし、私の上司は、ベスト プラクティスでは、DAO クラスに次のようにメソッド名を付ける必要があると言っています。

add(Invoice newInvoice);
update(Invoice oldInvoice);

請求書の無効化を更新と呼ぶ方法がわからないので、これは私には意味がありません?!!

それで、誰かが私をこれで案内して、私のメソッドの命名が間違っているかどうか教えてもらえますか? 言い換えれば、名前付けに追加、更新のみを使用するべきか、または任意の名前付けを使用してもベスト プラクティスと見なすことができるというのは正しいですか。

ありがとう

4

4 に答える 4

9

請求書の無効化はビジネス オペレーションです。そのようなロジックはサービス層にあると言えます。請求書を更新して無効としてマークし、データ レイヤーに渡して保存します。

データ層には、純粋な CRUD タイプのメソッド、つまり追加/保存/検索が含まれている必要があります。

多くの最新のデータ フレームワークを使用すると、データ レイヤーを記述する必要さえありません。たとえばhttp://blog.springsource.org/2011/02/10/getting-started-with-spring-data-jpa/

于 2013-07-10T21:08:04.047 に答える
3

まず第一に、少なくとも Java では、キャメルケースの各内部単語の最初の文字を大文字にしてメソッドに名前を付けます。メソッドのセクションで、次のことを確認できます。Java 命名規則

dao 内のメソッドの特定の命名について: モデル クラスに対して実行できる基本的な crud 操作を作成します。例:

add(Invoice invoice)
update(Invoice invoice)
// or instead 
save(Invoice invoice) // which will perform either add or update
delete(Invoice invoice) // or delete(int invoiceId)
findById(int invoiceId)
// and so forth

ビジネスに関連するので、dao 内で「無効」という用語を使用することはありません。dao をできるだけシンプルに実行し、その後、dao を使用するサービスで、必要なビジネスに関連するメソッドに名前を付けることができます (つまり、音声 (Invoice 請求書))。

基本的な CRUD 操作で一般的な dao を作成する別の可能性があり、必要に応じてメソッドの名前を付け始めることができます。

public class InvoiceDAO inherits GenericDao<Invoice> {
    // all the above methods would be inherited
    // add specific methods to your dao
}

繰り返しますが、私があなたなら、サービス内の特定のものの名前を変更します。私が示したものからどのようにアプローチしたいかは、あなた次第です。アイデアは、dao をできるだけシンプルに保つことです。

voidメソッドに名前を付けることもできます (Java ではキーワードであるため、名前をvoidにすることができるため、@Marco Forberg に気づいていただきありがとうございます) delete (Void - 削除されることを意味します) またはperformVoidのいずれかです。または、請求書を無効にした後にデータベースから請求書を削除しない場合は、単純に更新してください。更新は、請求書エントリに対して行った変更に適用できます。

于 2013-07-10T21:19:01.417 に答える