【天天新要闻】java中的DTO DAO


【资料图】

DTO概念

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

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

下面是一个示例DTO:

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:

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 getAll() throws SQLException {        List 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作为传输对象,从而隔离领域模型和持久性层。

关键词:

    为你推荐

    创建全国文明镇 西樵山开展山上古村环境整治工作

    美化景区提品质,让西樵山古村落更美更宜游!8月15日下午,西樵镇组织相关职能部门对西樵山古村开展人居环境整治专项行动。西樵山古村自唐代

    来源:珠江时报 22-08-17

    协鑫新能源:拟9037.98万元出售7座光伏电站

    3月16日,协鑫新能源发布公告称,公司间接附属苏州协鑫新能源及苏州协鑫开发(作为卖方)、江苏和盛(作为买方)于2022年3月16日与该等目标公司

    来源:国际能源网 22-03-18

    三峡能源河曲100MW光伏+储能发电EPC项目中标候选人公示

    3月16日,三峡能源河曲100MW光伏+储能发电项目光伏场区工程EPC总承包中标候选人公示。中标候选人第1名:中国能源建设集团山西电力建设第一

    来源:国际能源网 22-03-18

    因地制宜利用光伏 四川成都市近零碳排放区试点建设工作方案发布

    3月14日,成都市生态环境局等7部门发布成都市近零碳排放区试点建设工作方案,方案指出,到2025年,力争建成近零碳园区、工业企业、公共机构

    来源:国际能源网 22-03-18

    青海:重点支持黄河上游光风基地、源网荷储一体化等项目融资

    3月15日,青海省发改委发文称,积极推进金融战略合作加大黄河青海流域基础设施建设项目融资支持力度。其中提到,2022年,青海省发展改革委

    来源:国际能源网 22-03-18
    返回顶部