繁体   English   中英

dto和dao的实现

[英]dto and dao implementation

关于按钮的click事件的代码

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){                                         

  String login, password;

   login = jTextField1.getText().trim();
   password = jTextField2.getText().trim();

    System.out.println("hello");   
    RegisterDAO r = new RegisterDAO();
    r.insert(login, password);


}  

dao类的代码

 public class RegisterDAO {

 private String login, password;

public void insert(String login ,String password)
{
    this.login= login;
    this.password = password;

    RegisterDTO r = new RegisterDTO();
    r.setLogin(login);
    r.setPass(password);

 java.sql.Connection con = new DBConnection().getConnection();
   if (con!=null){
    System.out.println("the connection object is active ");

    PreparedStatement pst;
    String Q;
    int x=1;

    Q="insert into x(a,b) values(?,?)";
   try {
   pst=con.prepareStatement(Q);
   pst.setString(x++, login );
   pst.setString(x++,password);

   int a=pst.executeUpdate();
     System.out.println(a);

    }
    catch (Exception ex )
    {
        ex.printStackTrace();
    }
//JOptionPane.showMessageDialog(null, s, s, x, null);
}                  

我的课程

 public class RegisterDTO {
private String a;
private String b;
public void setLogin(String a)
{
    this.a = a ;
    System.out.println(a);
}
public String getLogin()
{
    return a;
}
public void setPass(String b)
{
    this.b = b;
    System.out.println(b);

}
public String  getPass()
{
    return b;
}       

1)我的问题是我无法保留setter和getter方法存储在dto类中的值。 使用dto获取价值的方法是什么? 我也想访问其他页面上的值,但我无法获得该值,dto类中的print语句显示该值存储在我创建的应用程序的变量中是基于swing并且我不知道不知道那是swing支持会话管理,如果它支持会话而不是帮我实现那个。

2)我想知道我在DAO和DTO的情况下遵循的approch是否合适

3)我想知道要访问dto到每个页面我是否需要创建dto的对象来访问它,如果是这样的话,它会导致模糊,因为创建了多个对象

4)我能否通过getter方法直接访问存储在dto中的值(无数据库访问)。 我已经创建了ret()方法来从我的dao类中的数据库中检索数据

    public void ret(String login  )
{
    login= this.login ; 

      java.sql.Connection con = new DBConnection().getConnection();
   if (con!=null){
    System.out.println("the connection object is active ");

    PreparedStatement pst;
    String Q;
    int x=1;

    Q="select * form x where a=?";
   try {
   pst=con.prepareStatement(Q);
       pst.setString(x++, login );


       ResultSet rs= null;      
        rs = pst.executeUpdate();


}

上面的代码导致错误,结果集无法处理executeUpdate()方法中的整数。 我是否需要为此目的进行强制转换,因为我无法弄清楚整数值是如何强制转换为结果集的。 我还想知道如何访问各个字段,因为结果集显示整个元组。 结果集如何将值存储到getter方法的各个字段中

1)我的问题是我无法保留setter和getter方法存储在dto类中的值。 使用dto获取价值的方法是什么? 我也想访问其他页面上的值,但我无法获得该值,dto类中的print语句显示该值存储在我创建的应用程序的变量中是基于swing并且我不知道不知道那是swing支持会话管理,如果它支持会话而不是帮我实现那个。

DTO类不是持久性的,它与DTO之间似乎没有任何联系。 由于它没有持久化,因此除非您通过DAO类来存储/检索值,否则您将无法在DTO类中重新加载项目。

2)我想知道我在DAO和DTO的情况下所遵循的approch是否合适

我不这么认为。 DAO是一个数据访问对象,在您的示例中是正确的,因为它产生执行基本CRUD操作的功能。 另一方面,我很确定你的DTO实现是不正确的。 DTO(就存储器而言)代表数据传输对象。 简而言之,它应该表示特定对象在数据库中具有的字段的子集,以便您可以使用更轻量级的对象来表示数据库实体。 例如,数据库中的User对象可能包含PKUIDDateCreatedDateModifiedNamePassword_Hash等字段。您的UserDTO将具有较少的字段,例如UIDName DAO层通常会产生DTO对象。

3)我想知道要访问dto到每个页面我是否需要创建dto的对象来访问它,如果是这样的话,它会导致模糊,因为创建了多个对象

是的,你必须这样做。 另一种方法是使用Singleton数据模式在所有类中共享和重用相同的DAO实例。

4)我能否通过getter方法直接访问存储在dto中的值(无数据库访问)。 我已经创建了ret()方法来从我的dao类中的数据库中检索数据

在这种情况下,DTO类是冗余的或误导性的。 我建议你删除它。

至于您的上一个问题,我建议您查看 Oracle教程,以获取有关如何使用JDBC的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM