(资料图)
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是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作为传输对象,从而隔离领域模型和持久性层。
X 关闭
X 关闭
5月20日,在建的广西最长跨海大桥——龙门大桥东主塔顺利封顶。至此,龙门大桥东、西两岸主塔全部实现封顶,标志着该桥进入缆索系统施工阶
中新网上海3月30日电 (记者 陈静)上海正面临常态化防控以来疫情形势最严峻复杂的挑战,单日新增阳性感染者数量不断刷新纪录。记者30日获
中新网3月30日电 据国家地震台网官方微博消息,中国地震台网正式测定:3月30日18时14分在新疆和田地区皮山县(北纬36 01度,东经77 89度)发
上海市委常委会今天上午(3月30日)举行会议,听取当前疫情应急处置和核酸筛查相关工作汇报,研究部署下一步疫情防控重点工作。市委书记
(抗击新冠肺炎)江苏无锡一男子隐匿行程轨迹被警方立案侦查 中新网无锡3月30日电 (记者 孙权)3月30日,无锡市在“应检尽检”人员核
(抗击新冠肺炎)官方称吉林市疫情扩散势头得到遏制 中新网吉林3月30日电 (记者 石洪宇)记者30日从吉林市政府新闻办召开的疫情防控
中新网唐山3月30日电 (白云水 孟潮)3月30日,河北省唐山市召开新冠肺炎疫情防控工作新闻发布会通报称,3月29日0时至24时,唐山市新增
浙江省嘉兴市秀洲区新型冠状病毒感染肺炎疫情防控指挥部办公室发布通告: 3月30日上午,秀洲区发现1例新冠肺炎阳性感染者,该感染者
今天(3月30日)下午,新疆乌鲁木齐市人民政府新闻办公室召开疫情防控新闻发布会,通报乌鲁木齐市新冠肺炎疫情和疫情防控最新情况。会上
中新网天津3月30日电 (记者 王君妍)记者30日从天津市水务局获悉,为充分发挥河湖长制优势,近日,天津市将南水北调中线天津干线(天津