当前位置: 首页 > 后端技术 > PHP

第三天-《企业应用架构模式》-映射到关系数据库

时间:2023-03-29 23:28:50 PHP

关系数据库成功。关系数据库成功的最重要原因之一是SQL的存在,它是数据库通信的标准语言。1、架构模式:驱动领域逻辑访问数据:SQL语句嵌入编程语言;rowdataentry,tabledataentry:将SQL访问和领域逻辑分开,放在一个独立的类中(让他们基于数据库中的表结构,每个数据表对应一个类),这些类为数据库;活动记录:当领域模型简单时,每个领域对象负责对应数据库表的访问过程数据映射器:当领域模型复杂时,它处理数据库和领域模型之间的所有访问操作,并允许两者各方独立更改)。主要好处是提高生产力!2.行为问题:1)所谓写入问题,就是如何从数据库中读取对象并存储到数据库中2)工作单元:作为数据库映射的控制器,它会跟踪所有从数据库中读取的对象以及所有以任何形式修改过的对象,并将更新提交给数据库(用于解决内存对象与数据库之间的数据同步问题)3)Identitymapping:在identitymapping中记录读取的每一行,防止相同objectfrombeingrepeatingLoading4)Lazyloading:减少domainmodel每次读取的数据3.读取数据:1)Finder:读取数据时,可以把读取数据的方法想象成finder2)Finder对象:如果数据库交互类是基于表的,将insert和update操作绑定到finder方法;如果数据库交互类是基于行的,创建一个独立的finder对象(每个finder类都有很多封装SQL语句的方法,finder对象在执行查询操作时返回一个合适的基于行的对象集合)3)读取数据性能经验法则:如有必要,尝试一次读取多行;当需要多表数据时,使用Join4。结构映射模式:1)关系映射:解决关系表之间的关联关系和对象之间的引用关系的一种方法:通过对象中的一个标识字段维护每个对象的关系特征,通过对象维护对象引用和关系键查找这些值对象之间的相互映射对于一些小值对象(例如日期范围和货币),不需要使用标识字段将对象引用变成外键(不应描述为它们在数据库中的表),但value应该去掉对象中的所有字段,以嵌入值的形式嵌入到关联的对象中,或者通过序列化LOB将一组对象存储为表中的单个列2)Inheritance:单表继承:为继承体系层次结构中的所有类创建一个表(修改容易,避免join,但每行必须有六列,每个p可能的子类Boa,浪费空间)具体表继承:在继承体系层次结构中为每个具体类创建一个表(避免join操作,允许从一个表中获取一个对象,但是比较难改变,比如any更改超类必须更改所有表和映射代码)类表继承:为继承层次结构中的每个类创建一个表(加载一个对象需要多次连接操作,通常会损失性能)。以上3种模式需要考虑自己的环境和喜好(Martin倾向于:使用单表继承,使用其他2种模式来帮助解决不可避免的无关无用的列问题)5.建立映射:自己选择数据库方案:使用经典的数据库设计技术围绕数据设计表,使用行数据入口或表数据入口从领域逻辑中去除SQL并使用现有的数据库方案:简单的领域逻辑可以创建行数据入口或表数据入口类来模拟数据库,最重要的是创建一个具有领域逻辑的复杂的逐步领域模型,并包括用于多个数据源的数据映射器:构建多个映射层,每个数据源一个。如果数据非常相似,可以将数据从内存方案转换为逻辑数据存储方案,从逻辑数据存储方案映射到实际物理存储方案(第二部分包含差异)6.使用元数据:元数据映射基于将映射方法压缩到元数据文件。元数据文件详细描述了数据库中的列如何映射到对象的字段。如:7.数据库连接:数据库连接池8.其他问题:select*from问题大多使用预编译静态SQL