4

我试图用 Java 编写一个用户认证系统。所以我写了一些DAO类。首先,我确实编写了一个名为Persistence的抽象类。它负责保存一些通用属性。并写了一个名为 User 的类扩展Persistence类。这些课程是——

  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) 行为不依赖于实现——你的 DAOImpl 可以使用 jdbc、hibernate 等等

您的Persistance类实际上是所有实体的基类——即所有类的实例都被保存,您希望在一个地方表示一些公共字段。这是一个很好的做法——我不会打电话给班级Persistance,比如BaseEntity更好(恕我直言)。确保有解释类目的的 javadocs。

关于变量名,只要它们有意义并描述它们的用途,它就很好。

so dateCreatedorcreatedDate都很好;他们都明白了这个想法。

于 2011-09-21T17:38:59.253 回答
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.
}

我更喜欢使用 ID 而不是 VO 对象来识别删除的目标。此外,更新可能会将用户 ID“smackdown”标识的目标更改为用户 ID“smackup”,因此我通常会传递一个 id 和一个 VO。

于 2011-09-21T17:54:41.230 回答
2

一个好的方法是使用 JPA 及其所有功能,本教程非常有帮助。它解释了如何使用 @PrePersist 和 @PreUpdate 注释来设置创建和更新时间戳。@Version 注解支持乐观锁定。

于 2011-09-21T20:43:16.653 回答
0

我的问题是 - 编写变量名的最佳方式是什么,哪个好,createdDate 或 dateCreated,deleted 或 isDeleted 等。

createdDate 或 dateCreated 是非常主观的。在数据库中,我主要看到 createdDate。在deleted 和isDeleted 之间,我更喜欢(再次主观地)deleted。我认为getter方法可以命名为isDeleted()。

于 2011-09-21T17:40:40.203 回答