java中的DTO DAO

2023-03-31 10:34:00 | 来源:腾讯云


(资料图片仅供参考)

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

上一篇 下一篇

相关新闻

java中的DTO DAO

2024国家公务员考试申论指导:提出更具针对性之“对策” 全球微速讯

漫趣_关于漫趣介绍

今日热议:警长也是护河人

焦点快播:券商降薪,实锤了!

【天天报资讯】2023年3月29日河南省无烟煤价格最新行情预测

阿的江:这是第一与倒数第一的比赛 我们与浙江的差距是全方位的

3月30日21时内蒙古乌兰察布疫情最新通报详情及乌兰察布最新疫情目前累计多少例 全球速看料

精选!二三四五持续发力公益事业 积极践行社会责任

要闻速递:北京已有六家“类博物馆”向公众开放

微盟发布2022年报:下半年业绩企稳复苏 WOS构建竞争壁垒 投入AI技术创新|速递

博鳌时间:高水平开放下中国经济展现新动能

全球消息!当贝发起国内首个投影仪行业亮度标准CVIA流明 各投影品牌已陆续启用

焦点关注:拉芳家化:截止2022年6月30日公司现有授权专利共142项

广期所:发布2023年清明节期间交易时间安排的通知-当前看点

最新新闻

java中的DTO DAO

2024国家公务员考试申论指导:提出更具针对性之“对策” 全球微速讯

漫趣_关于漫趣介绍

今日热议:警长也是护河人

焦点快播:券商降薪,实锤了!

【天天报资讯】2023年3月29日河南省无烟煤价格最新行情预测

阿的江:这是第一与倒数第一的比赛 我们与浙江的差距是全方位的

3月30日21时内蒙古乌兰察布疫情最新通报详情及乌兰察布最新疫情目前累计多少例 全球速看料

精选!二三四五持续发力公益事业 积极践行社会责任

要闻速递:北京已有六家“类博物馆”向公众开放

微盟发布2022年报:下半年业绩企稳复苏 WOS构建竞争壁垒 投入AI技术创新|速递

博鳌时间:高水平开放下中国经济展现新动能

全球消息!当贝发起国内首个投影仪行业亮度标准CVIA流明 各投影品牌已陆续启用

焦点关注:拉芳家化:截止2022年6月30日公司现有授权专利共142项

广期所:发布2023年清明节期间交易时间安排的通知-当前看点

滨化股份1亿元于山东新设子公司,含新材料技术研发业务:企查查APP显示,近日,山东滨化海铭化工有限公司成立,注册资本1亿元人民币,经营范围包含

看看北大教授孔庆东的早餐|全球热消息

这些主页装扮和皮肤太配了!五款适合放在主页的皮肤和装扮 速看料

美国男子被捕期间身亡:曾呼喊"不能呼吸" 7名警察被控过失杀人-天天热消息

库克现身米哈游总部 与《原神》创作者交谈

全球快报:2023女生的qq昵称伤感精选网名57个(2028年女生网名)

她曾是男人“梦中人”, 巅峰时期美到惊为天人, 可惜已经退隐12年 今日要闻

“马斯克们”呼吁暂停训练高级AI,ChatGPT怎么看?

微速讯:2023年业务员周工作计划 业务员一周工作总结和下周工作计划13篇(汇总)

专注运动,捷豹XEL将青春打在公屏上

地下城与勇士购买的金币怎么拿_地下城与勇士游戏中如何购买金币?|焦点简讯

金山云:预计一季度总收入18.5亿元-20.5亿元-世界观速讯

哲理故事大全:不受欢迎的乌鸦相关作文 哲理故事:鹰与蜣螂相关 环球聚焦

字帖_字贴|环球热消息

当前头条:黑熔炉怎么升级_黑熔炉