持久:英文即Persistence,简单来讲,也就是把数据保存到可掉电式存储设备中供之后使用。数据持久化往往意味着将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系型数据库来完成。
持久层:也就是在系统逻辑层面上,专注于实现数据持久化的一个相对独立的领域。
所谓的持久层,其判定标准
1、如果表示层发生变化,需要从JSP迁移到Java WebStart Client,我们的数据库代码是否需要重新编译。
2、如果业务逻辑层发生了变化,那么数据持久化代码是否需要重新编译?
3、如果地秤数据库持久化机制发生了改变,那么,系统中的非持久化部分代码是否需要重新编译?
何谓耦合:就是事务之间的相互关联关系
何谓解耦:即采用一些手段降低关联的紧密程度。
我们需要的是一个粒度适中的耦合关系,而并非完全意义上的松耦合。
软件系统的研发过程中,贯穿了技术层面和业务层面的代码实现过程。程序逻辑必须结合业务领域内相应的数据和系统资源,反映出特定的业务逻辑。对于一个业务系统而言,系统研发的目的是为特定业务提供支持,业务逻辑往往是系统实现的核心。此时,将业务逻辑与数据访问逻辑相分离尤为重要。
在业务逻辑的实现过程中,我们应该避免业务逻辑代码中混杂数据访问代码,而同样,数据访问代码中,也应该避免出现业务逻辑代码。
通过良好的设计将逻辑结构与物理结构相分离。这里所谓的物理结构并非传统意义上的硬件设备,而是我们所无法控制的系统层面,如底层数据库接口。
目标只有一个,底层实现变动的情况下,尽量避免对上层结构产生影响。一个设计良好的持久层实现,即便从oracle切换到mysql数据库,也不会引起大范围的代码变更。
DAO(Data Access Object)模式,DAO模式实际上是2个模式的组合,即Data Accessor模式和Active Domain Object模式,其中Data Accessor模式实现了数据访问和业务逻辑的分离,而Active Domain Object模式实现了业务数据的对象化封装,一般我们将这2个模式组合使用。
DAO模式通过对业务层提供数据抽象层接口,实现了以下目标:
1、数据存储逻辑的分离
通过对数据访问逻辑进行抽象,为上层结构提供抽象化的数据访问接口。业务层无需关心具体的select,insert,update操作,这样,一方面避免了业务代码中混杂JDBC调用语句,使得业务逻辑实现更加清晰,另一方面,由于数据访问接口与数据访问实现相分离,也使得开发人员的专业划分成为可能。
2、数据访问底层实现的分离
DAO模式通过将数据访问划分为抽象层和实现层,从而分离了数据使用和数据访问的底层实现细节。这意味着业务层与数据访问的底层细节无关,也就是说,我们可以在保持上层结构不变的情况下,通过切换底层实现来修改数据访问的具体机制。
3、资源管理和调度的分离
在数据库操作中,资源的管理和调度是一个非常值得关注的主题。大多数系统的性能瓶颈往往并非集中在业务逻辑处理本身。DAO模式将数据访问逻辑从业务逻辑中脱离出来,使得在数据访问层实现统一的资源调度成为可能,通过数据库连接池以及各种缓存机制的配合使用,往往可以在保持上层系统不变的情况下,大幅度提升系统性能。
4、数据抽象
DAO模式通过对底层数据的封装,为业务层提供一个面向对象的接口,使得业务逻辑开发人员可以面向业务中的实体进行编码。通过引入DAO模式,业务逻辑更加清晰,且富裕形象性和描述性。
posted on 2009-10-05 10:32
王永庆 阅读(234)
评论(0) 编辑 收藏 所属分类:
HIBERNATE