smartleizi 2013-08-22
对象-关系映射(Object/Relation Mapping,简称ORM)。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,
关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,
在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。
因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
表现层负责收集用户请求数据,以及业务数据的表示。
Hibernate作为O/R Mapping框架使用,其O/R Mapping 功能简化了数据库的访问,并在JDBC层上提供了更好的封装。以面向对象的方式操作数据库,
更加符合面向对象程序设计的思路。
POJO(Plain Old Java Objects)简单的Java对象, 其中有一些属性及其getter setter方法的类,没有业务逻辑,
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表
DAO优点:
抽象出数据访问方式,业务逻辑无需理会底层数据库访问细节,提高可移植性,
业务逻辑组件作为DAO组件的门面,符合门面模式的设计
业务逻辑组件负责业务逻辑的变化,而DAO组件负责持久化技术的变化,这正是桥接模式的应用。
桥接模式在Java EE架构中有非常广泛的用途,由于Java EE应用需要实现跨数据库的功能,程序为了在不同数据库之间迁移,因此系统需要在持久化技术这个维度上存在改变;除此之外,系统也需要在不同业务逻辑实现之间迁移,因此也需要在逻辑实现这个维度上存在改变,这正好符合桥接模式的使用场景。因此,Java EE应用都会推荐使用业务逻辑组件和DAO组件分离的结构,让DAO组件负责持久化技术这个维度上的改变,让业务逻辑组件负责业务逻辑实现这个维度上的改变。由此可见,Java EE应用中常见的DAO模式正是桥接模式的应用。
可能有读者会感到奇怪,刚才我们还提到用业务逻辑组件来包装DAO组件是门面模式,怎么现在又说这种方式是桥接模式呢?其实这两种说法都没有问题,称这种方式为门面模式,是从每个业务逻辑组件底层包装了多个DAO组件这个角度来看的,从这个角度来看,业务逻辑组件就是DAO组件的门面;如果从DAO组件的设计初衷来看,设计DAO组件是为了让应用在不同持久化技术之间自由切换,也就是分离系统在持久化技术这个维度上的变化,从这个角度来看,Java EE应用中分离出DAO组件本身就是遵循桥接模式的。