1
3
在我看来,主要区别在于TDG以数据库(持久性)为中心,而DAO以业务/对象实例为中心。 TDG充当数据库表的外观(某种程度上),它以表为中心(更改表,然后更改TDG)。 DAO是一个抽象视图,通常表示一个对象的特定实例(不是整个表,在以表为中心的透视图中——事实上,它们根本就不是以持久性为中心的);DAO通常是围绕业务概念设计的。 在您只需要在数据库之上构建一个访问层的情况下,TDG将非常有用——在这个情况下,项目完全与数据库有关(为其他应用程序获取对它的访问权限等等,比如说一个遗留系统)。 DAO将用于更“正常”的情况,在这种情况下,您将从头开始构建一个新的以业务/逻辑为中心的解决方案。 TDG示例(伪代码) 您的起点是数据库,例如:一个包含3行数据的表:
您的下一步将是构建一个处理物理数据访问的代码层,您返回的数据不会比表提供的多也不会少。如果您有多个表,它们将分别显示(i 认为 -我需要检查)。作为数据的使用者,您必须将逻辑中的内容(在TDG本身之外的代码中)连接起来。 代码返回数据的方式在很大程度上取决于您——您甚至可以使用一个对象:
因此,现在您可以用代码表示数据;您的应用程序可以使用它喜欢的数据。但是,如果数据库结构发生变化,您还需要更改代码层以匹配-在本例中,
DAO示例(伪代码) 首先,您将围绕客户、许可证、许可证、购买、背书、位置等概念设计您的系统;然后(可能)建模这些概念之间的关系。假设我们在核心业务逻辑中有一些类,我们定义为:
到目前为止,我们还没有访问任何数据,我们甚至可能不知道我们的数据源将是什么。如果我们提前考虑,我们将使用 Dependancy Inversion (DI)。 DI最重要的是BL和DAL之间的接口;我们可以指定一个包含如下内容的接口:
这个
|
Pep Gomez · Jackson忽略类序列化中的getter 6 年前 |
Angelo · javax。坚持不懈PersistenceException:组织。冬眠MappingException:未知实体:it。*。PoolStateResult |将结果映射到DTO(非实体) 7 年前 |
KaderLAB · 初始化DTO中的文件 7 年前 |
Jesper · 从DAL返回的对象的DTO等价项是什么? 7 年前 |
richard · 使用gson和back序列化不适用于泛型类型 7 年前 |