4

Javaでユーザー認証システムを書こうとしていました。だから私はいくつかのDAOクラスを書きました。最初に、抽象化されたPersistenceという名前のクラスを作成しました。いくつかの共通属性を保持する責任があります。そしてPersistenceクラスを拡張する User という名前のクラスを書きました。それらのクラスは –

  public abstract class Persistance {

     private Date createdDate;
     private Date lastUpdatedDate;
     private long version;
     private boolean  isDeleted;


    //getter and setters
 }

そしてユーザークラス

 public class User extends  Persistance{
   private String username;
   private String password;
   private String passwordConfired;

  // getters and setters

 }

私の質問は、変数名を書く最良の方法は何ですか、createdDateまたはdateCreated、deletedまたはisDeletedなど、どちらが良いですか.

そして、このアプローチは大丈夫ですか、それとももっと良いアプローチがありますか? また、データのバージョン管理を実装する方法は?

4

4 に答える 4

3

DAO を作成するには、通常、DAO の動作を定義するインターフェイスを作成します。

interface MyObjDao {

    public int save(MyObj myObj);

    public void delete (MyObj myObj);

    // as many methods as you need for data acess

}

次に、実際の実装を作成します

class MyObjDaoImpl implements MyObjDao {
    // implement methods here

}

これの利点は次のとおりです。

1) インターフェイスを定義するため、どのテスト フレームワークでも DAO のモックを作成するのは簡単です 2) 動作は実装に結び付けられていません。

クラスPersistanceは実際にはすべてのエンティティの基本クラスです。つまり、すべてのクラスのインスタンスが保存され、いくつかの共通フィールドを 1 か所で表現したい場合です。これは良い習慣です - 私はクラスとは呼びませPersistanceBaseEntity。クラスの目的を説明する Javadoc を用意してください。

変数名に関しては、意味があり、その目的を説明している限り、それで問題ありません。

そう、dateCreatedまたはcreatedDate両方とも問題ありません。どちらもアイデアを理解しています。

于 2011-09-21T17:38:59.253 に答える
2

適切なアプローチは、JPA のすべての機能を使用することです。このチュートリアルは非常に役に立ちました。@PrePersist および @PreUpdate アノテーションを使用して、作成および更新のタイムスタンプを設定する方法について説明します。オプティミスティック ロックは、@Version アノテーションでサポートされています。

于 2011-09-21T20:43:16.653 に答える
2

DAO (データ アクセス オブジェクト) と VO (値オブジェクト) (DTO (データ転送オブジェクト) とも呼ばれます) を同じクラスに混在させています。

DAO 動作のインターフェイスを使用した例 (blammy と kpow は、webservice、oracle データベース、mysql データベース、hibernate、または意味のあるものである可能性があります):

public interface UserDTO
{
    boolean deleteUser(String userId);
    UserVO readUser(String userId);
    void updateUser(String userId, UserVO newValues);
}

package blah.blammy;
public class UserDTOImpl implements UserDTO
{
  ... implement it based on blammy.
}

package blah.kpow;
public class UserDTOImpl implements UserDTO
{
  ... implement it based on kpow.
}

音声の例:


public class UserVO
{
    String firstName;
    String lastName;
    String middleInitial;

    ... getters and setters.
}

VO オブジェクトの代わりに ID を使用して削除のターゲットを識別することを好みます。また、更新により、ユーザーID「smackdown」で識別されるターゲットがユーザーID「smackup」に変更される可能性があるため、通常はidとVOを渡します。

于 2011-09-21T17:54:41.230 に答える
0

私の質問は、変数名を書く最良の方法は何ですか、createdDateまたはdateCreated、deletedまたはisDeletedなど、どちらが良いですか.

createdDate または dateCreated は非常に主観的です。ただし、データベースでは、createdDate をほとんど見てきました。削除済みと isDeleted の間で、私は (やはり主観的に) 削除済みを好みます。getter メソッドの名前は isDeleted() にできると思います。

于 2011-09-21T17:40:40.203 に答える