前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中的DTO DAO

java中的DTO DAO

原创
作者头像
堕落飞鸟
发布2023-03-30 11:18:22
1.2K0
发布2023-03-30 11:18:22
举报
文章被收录于专栏:飞鸟的专栏

DTO概念

DTO是Java编程中的一个常见概念,代表数据传输对象。DTO的主要目的是在不同层次之间传递数据,以避免将领域模型暴露给用户界面或持久性层。DTO通常只包含数据,而不包含任何业务逻辑。DTO也可称为VO(Value Object)或POJO(Plain Old Java Object)。

DTO用于减少应用程序中的网络通信量和内存开销。数据传输对象将数据库表映射到Java对象,并且它们通常不需要任何业务逻辑或操作。因此,DTO只是一个简单的Java对象,通常由getter和setter方法组成。

下面是一个示例DTO:

代码语言:javascript
复制
javaCopy codepublic class PersonDTO {
    private String name;
    private int age;

    public PersonDTO(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

上述示例中的PersonDTO类只有两个字段:name和age。这个类没有任何业务逻辑或操作,只是一个简单的Java对象,用于在应用程序不同层次之间传输数据。

DAO概念

DAO是Java编程中的另一个常见概念,代表数据访问对象。DAO用于与数据库交互,包括从数据库中检索数据、将数据写入数据库以及更新数据等。DAO通常被用来隔离业务逻辑和数据库操作,从而使代码更容易维护和测试。

DAO类通常包含各种查询方法,例如根据ID检索单个对象、根据属性检索对象列表、插入新对象、更新对象以及删除对象等。DAO通常使用DTO作为传输对象,从而隔离领域模型和持久性层。

下面是一个示例DAO:

代码语言:javascript
复制
javaCopy codepublic class PersonDAO {
    private Connection conn;

    public PersonDAO(Connection conn) {
        this.conn = conn;
    }

    public PersonDTO getById(int id) throws SQLException {
        PreparedStatement stmt = conn.prepareStatement("SELECT * FROM persons WHERE id=?");
        stmt.setInt(1, id);
        ResultSet rs = stmt.executeQuery();
        if (rs.next()) {
            String name = rs.getString("name");
            int age = rs.getInt("age");
            return new PersonDTO(name, age);
        } else {
            return null;
        }
    }

    public List<PersonDTO> getAll() throws SQLException {
        List<PersonDTO> persons = new ArrayList<>();
        PreparedStatement stmt = conn.prepareStatement("SELECT * FROM persons");
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {
            String name = rs.getString("name");
            int age = rs.getInt("age");
            persons.add(new PersonDTO(name, age));
        }
        return persons;
    }

    public void insert(PersonDTO person) throws SQLException {
        PreparedStatement stmt = conn.prepareStatement("INSERT INTO persons(name, age) VALUES (?, ?)");
        stmt.setString(1, person.getName());
        stmt.setInt(2, person.getAge());
        stmt.executeUpdate();
    }

    public void update(PersonDTO person) throws SQLException {
        PreparedStatement stmt = conn.prepareStatement("UPDATE persons SET name=?, age=? WHERE id=?");
        stmt.setString(1, person.getName());
        stmt.setInt(2, person.getAge());
        stmt.executeUpdate();
    }

    public void delete(PersonDTO person) throws SQLException {
        PreparedStatement stmt = conn.prepareStatement("DELETE FROM persons WHERE id=?");
        stmt.setInt(1, person.getId());
        stmt.executeUpdate();
    }
}

上述示例中的PersonDAO类有一个成员变量conn,它是一个Java SQL Connection对象。PersonDAO类还有许多查询方法,例如getById、getAll、insert、update和delete等。这些方法使用预编译的SQL语句从数据库中检索数据、将数据写入数据库以及更新数据等。这些方法还使用PersonDTO作为传输对象,从而隔离领域模型和持久性层。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DTO概念
  • DAO概念
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档