• Spring——Spring对DAO的支持


    Spring对DAO的支持

      随着持久化技术的持续发展,Spring对多个持久化技术提供了集成支持,包括Hibernate、MyBatis、JPA、JDO;此外,还提供了一个简化JDBC API操作的Spring JDBC框架。Spring面向DAO指定了一个通用的异常体系,屏蔽具体持久化技术的异常,使业务层和具体的持久化技术实现解耦。

    Spring的DAO理念

      DAO(Data Access Object)是用于访问数据的对象,DAO不但屏蔽了数据储存的最终介质的不同,也屏蔽了具体的实现技术的不同。

      近几年,各种数据持久化技术得到了长足发展,Hibernate、MyBatis、JPA、JDO成为持久层中常用的实现技术。只要为访问数据定义好DAO接口,并且使用具体技术实现DAO接口的功能,就可以在不同的实现技术间平滑切换。

      图中,在UserDao中定义访问User数据对象的接口方法,业务层通过UserDao操作数据,并使用具体的持久化技术实现UserDao接口方法,这样业务层和具体的持久化技术就实现了解耦。

      提供DAO层的抽象可以带来一些好处:首先,可以很容易地构造模拟对象,方便单元测试的开展;其次,在使用切面时会有更多选择,既可以用JDK动态代理,又可以使用CGLib动态代理。

      Spring本质上希望以统一的方式整合底层的持久化技术,即以统一的方式进行调用及事务管理。由于每种每种持久化技术都有各自的异常体系,所以Spring提供了统一的异常体系,方便定义出和具体实现技术无关的DAO接口,以整合到相同的事务管理体系中。 

      


    统一的异常体系:

      统一的异常体系是整合不同的持久化技术的关键。Spring提供了一套和实现技术无关的、面向DAO层语义的异常体系,并通过转换器将不同持久化技术的异常转换成Spring的异常。


    统一数据访问模板:

      在使用JDBC数据访问操作中一般按以下流程进行:

        (1)准备资源

        (2)启动事务

        (3)在事务中执行具体的数据访问操作

        (4)提交/回滚事务

        (5)关闭资源,处理异常。

      按照传统方式,在编写任何带事务的数据访问程序时,都要重复上面的代码,而其中只有加粗的部分是和业务相关的,其他都是重复的内容。

      Spring将这个相同的数据访问流程固化到模板类中,并将数据访问中固定和变化的部分分开,同时保证模板线程类是线程安全的,以便多个数据访问线程共享同一个模板实例。这样,只要编写好回调接口,并调用模板类进行数据访问,就可以得到想要的结果:数据访问成功执行,前置和后置的模板化工作也按顺序执行,提高开发效率的同时保证了资源使用的正确性,消除了因忘记释放资源而引起的资源泄露问题。

  • 相关阅读:
    js--数组中的最值
    js--数组合并并且去重
    js---数组去重的方法总结???
    input 输入框又被输入法遮挡啦
    使用装饰者模式改善既有代码
    简易的 webpack + vue 完成本地化数据 mock
    vue 数据持久化(刷新保存数据)的探索
    JavaScript await 与 promise 的纠葛
    javascript 函数的暂停和恢复
    Symbol 小妙处
  • 原文地址:https://www.cnblogs.com/ELAIRS/p/12205312.html
Copyright © 2020-2023  润新知