Spring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术, 如JDBC,Hibernate或者JDO等。它不仅可以让你方便地在这些持久化技术间切换, 而且让你在编码的时候不用考虑处理各种技术中特定的异常。
Spring提供了一种方便的方法,把特定于某种技术的异常,如SQLException, 转化为自己的异常,这种异常属于以DataAccessException 为根的异常层次。这些异常封装了原始异常对象,这样就不会有丢失任何错误信息的风险。
除了对JDBC异常的封装,Spring也对Hibernate异常进行了封装,把它们从一种专有的checked异常 (Hibernate3.0以前的版本),转化为一系列抽象的运行时异常。对JDO也是这样。 它可以让你轻松处理大多数持久化异常(这些异常大多是不可恢复的,而且只出现在特定 的层次),而不再需要讨厌的样板式catch/throw代码块和异常声明。你仍然可以在需要 的地方捕获并处理这些异常。就像我们上面提到的,JDBC异常(包括特定于某种数据库 方言的异常)也可以被转化为同样的异常层次,这意味着你可以在一致的编程模型下,通 过JDBC来执行某些操作。
上述情况适用于各种使用模板方式的ORM访问框架。如果使用拦截器方式,你在应用中 就得自己小心处理HibernateException、 JDOException等,最好是委托给 SessionFactoryUtils的 convertHibernateAccessException、 convertJdoAccessException等方法。这些方法可以把相应的异常转 化为与org.springframework.dao中定义的异常层次相兼容的异常。 其中JDOException属unchecked异常,它们则被简单地抛出, 尽管这在异常处理方面牺牲了通用的DAO抽象。
下图描述了Spring使用的异常层次:
(注意上图所包含的异常类只是整个庞大的DataAccessException 异常层次中的一部分。)
为了便于以一种一致的方式使用各种数据访问技术,如JDBC、JDO和Hibernate, Spring提供了一套抽象DAO类供你扩展。这些抽象类提供了一些方法,通过它们你可以 获得与你当前使用的数据访问技术相关的数据源和其他配置信息。
Dao支持类:
-
JdbcDaoSupport - JDBC数据访问对象的基类。 需要一个DataSource,同时为子类提供 JdbcTemplate。
-
HibernateDaoSupport - Hibernate数据访问对象的基类。 需要一个SessionFactory,同时为子类提供 HibernateTemplate。也可以选择直接通过 提供一个HibernateTemplate来初始化, 这样就可以重用后者的设置,例如SessionFactory, flush模式,异常翻译器(exception translator)等等。
-
JdoDaoSupport - JDO数据访问对象的基类。 需要设置一个PersistenceManagerFactory, 同时为子类提供JdoTemplate。
-
JpaDaoSupport - JPA数据访问对象的基类。 需要一个EntityManagerFactory,同时 为子类提供JpaTemplate。
分享到:
相关推荐
数据访问对象(DAO,Data Access Object)是一种设计模式,它在软件工程中被用来封装对数据库的操作,使得业务逻辑层与数据存储层之间的耦合度降低。DAO模式的主要目标是提供一个接口,通过这个接口,应用程序可以...
Spring DAO框架也支持ORM(对象关系映射)框架如Hibernate和MyBatis的集成,可以方便地在Spring应用中使用这些ORM框架进行数据访问。 **7. Spring Data** Spring Data是Spring DAO的扩展,它提供了一种更加高级的...
6. **DAO(Data Access Object)模式**:Spring推荐使用DAO模式来组织数据访问层,这样可以将业务逻辑和数据访问逻辑分离,提高代码的可测试性和可维护性。 7. **AOP(面向切面编程)**:Spring的AOP功能可用于实现...
在Java开发中,Spring框架提供了对数据访问对象(DAO)的强大支持,旨在降低系统组件之间的耦合度,推动面向接口的编程,简化编程模型,使得开发更加高效和易于维护。本文将从三个方面探讨Spring对DAO的支持:传统...
其中,DAO(Data Access Object)模式旨在提供一种抽象的数据访问机制,将数据访问的逻辑封装在一个对象中,从而使得应用程序能够独立于底层的数据存储系统进行操作。Spring框架作为Java开发中的一个重量级工具,...
Spring的DAO支持是其核心模块之一,用于简化数据访问层(DAO)的开发,通过将固定的数据访问逻辑和业务逻辑分离,提高了代码的可维护性和复用性。Spring的DAO设计模式主要体现在模板(Template)和回调(Callback)...
本学习资料主要关注JDBC在数据访问对象(DAO)模式中的应用,以实现MVC架构中的数据访问层封装。 首先,我们来理解一下MVC(Model-View-Controller)架构模式。这是一种将业务逻辑、用户界面和数据访问分离的设计...
Mybatis_SpringDao 是一个关于将Mybatis与Spring框架整合使用的示例项目,它展示了如何在Spring应用中采用原始Dao(Data Access Object)的方式进行数据访问,并且包含了事务管理的实现。下面我们将深入探讨这个主题...
5. **DAO和Service层设计**:在Spring应用中,通常会创建DAO(数据访问对象)层和Service层。DAO层直接与数据库交互,而Service层则封装了业务逻辑,调用DAO进行数据操作。Spring的IoC容器可以方便地管理这些组件的...
本资源“spring_aop.rar_spring-dao”是一个关于Spring AOP(面向切面编程)和Spring DAO(数据访问对象)的实例,旨在帮助开发者理解如何在Spring框架下实现AOP的控制反转,并有效地进行DAO层的操作。 首先,我们...
Spring框架提供了对DAO的支持,通过依赖注入(DI)和面向切面编程(AOP)简化了数据访问层的实现。 描述中提到的"一个综合系统的完整代码三struts.hibernate3.0,spring的结构"表明这是一个包含三层架构(MVC)的...
在Java开发中,数据访问对象(DAO)模式是一种常见的设计模式,用于封装对数据库的操作,使得业务逻辑层与数据存储层之间解耦。在MyBatis和Spring框架结合使用时,DAO模式的应用使得数据库交互更加方便且易于管理。 ...
在Java的Spring框架中,DAO(Data Access Object)数据访问对象是一种设计模式,用于封装数据库操作,使得业务逻辑层与数据存储层之间解耦。Spring框架提供了对DAO的支持,包括与JDBC、Hibernate、JDO和JPA等不同...
这个错误通常意味着编译环境无法找到`DaoSupport`类,这是Spring DAO模块中的一个关键类,用于提供数据访问对象(DAO)的基本支持。`DaoSupport`是许多自定义DAO实现的基础,它提供了事务管理和其他便利功能。 首先...
4. **定义DAO层**:使用Spring的HibernateTemplate或JdbcTemplate,编写数据访问对象(DAO),实现对数据库的操作。 5. **定义Service层**:创建业务服务接口和实现,使用Spring的@Autowired注解注入DAO,封装业务...
1. DAO模式:DAO模式是一种设计模式,用于将业务逻辑与数据访问层解耦,提供一个抽象层来处理数据库操作。 2. Spring的JDBC DAO实现:在Spring中,我们可以创建一个接口定义数据库操作,然后使用Spring的...
在Spring框架中,数据访问对象(Data Access Object, DAO)是一种设计模式,它为应用程序提供了一种抽象层,用于处理底层的数据存储和检索操作。DAO模式的主要目标是将业务逻辑和数据访问逻辑分离,使代码更加模块化...
数据访问对象(Data Access Object,简称DAO)模式是一种软件设计模式,它在应用程序与数据库交互时起到了隔离作用。DAO模式的主要目标是通过提供一个抽象层,使得业务逻辑组件与底层数据存储机制解耦,从而降低了...
泛型DAO(Data Access Object)是一种设计模式,它的目标是通过泛型将业务对象与数据访问逻辑分离,使得DAO层能够适应多种类型的实体类。在Struts2+Hibernate+Spring的集成中,泛型DAO扮演着重要的角色,它使得DAO层...