开发者社区> 青衫无名> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《Spring 5 官方文档》14.DAO support

简介:
+关注继续查看

14. DAO支持

14.1 介绍

在Spring中数据访问对象(DAO)旨在使JDBC,Hibernate,JPA或JDO等数据访问技术有一致的处理方法,并且方法尽可能简单。
这样就可以很容易地切换上述持久化技术,并且切换过程无需担心每种技术的特有异常。

14.2 一致的异常层级

Spring为技术特定异常提供了一个适当的转化,例如:SQLException 所属异常类层级用DataAccessException 作为根异常,这些异常包括了原来的异常,所以不会有丢失可能出错信息的风险。

除了JDBC异常,Spring也包含了Hibernate特定异常,将它们转换为一组集中的运行时异常(对JDO 和 JPA 异常也是如此),在合适的层次上处理多数不可恢复的持久化异常,而不会在dao上产生繁琐的catch-throw块和异常声明(仍然可以在认为合适的地方捕获和处理异常)。向上面提到的一样,JDBC异常(包括数据方言)也都转化为相同的层级结构,意味着在一个统一的项目模型中你也可以执行一些JDBC操作。

以上列举的Spring的各种模板类支持各种ORM框架。如果使用基于拦截器的类,那么我们的程序必须关心并处理HibernateExceptions和JDOExceptions本身,最好是通过分别授权给SessionFactoryUtils’ `convertHibernateAccessException(..)或 convertJdoAccessException()方法。这些方法将这些异常转化为与org.springframework.dao中异常层级兼容的异常。由于JDOExceptions 没有被检查,它可以被简单的抛出,这也牺牲了DAO在异常上的抽象。

下图展示了Spring提供的异常层级,(请注意:在这张图上显示出来的类层级仅仅是整个DataAccessException 的一个子集)
DataAccessException hierarachy

 

14.3 配置 DAO 或 Repository 类的注解

使用@Repository注解是数据访问对象(DAOs)或库能提供异常转换的最好方式,这个注解还允许组件扫描,查找并配置你的 DAOs 和库,并且不需要为它们提供 XML 配置文件。

@Repository
public class SomeMovieFinder implements MovieFinder {
// ...
}

任何DAO或库实现都需要访问持久的源,依赖于持久化技术的使用;例如:一个基于JDBC的库需要访问一个JDBC DataSource,一个基于JPA的库需要访问一个 EntityManager,最简单的方式就是使用 @Autowired, @Inject, @Resource 或@PersistenceContext 这些注解中的一个完成资源的依赖注入,这是一个JPA库的例子:

@Repository
public class JpaMovieFinder implements MovieFinder {

@PersistenceContext
private EntityManager entityManager;

// ...

}

如果你使用传统的Hibernate API,你可以注入SessionFactory:

@Repository
public class HibernateMovieFinder implements MovieFinder {

private SessionFactory sessionFactory;

@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}

// ...

}

最后一个例子我们将在这里展示典型的JDBC支持,你将会在初始化方法中注入 DataSource ,
在初始化方法中,你将使用这个DataSource创建一个JdbcTemplate 和其他与SimpleJdbcCall相似的数据访问支持类。

@Repository
public class JdbcMovieFinder implements MovieFinder {

private JdbcTemplate jdbcTemplate;

@Autowired
public void init(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}

// ...

}

 转载自 并发编程网 - ifeve.com

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring 源码阅读 44:@Resource 注解的处理
本文分析了 CommonAnnotationBeanPostProcessor 后处理器处理`@Resource`等注解的解析和注入的原理。
0 0
【spring 官方ORM框架】spring-data-jpa详细教程
【spring 官方ORM框架】spring-data-jpa详细教程
0 0
spring security入门小demo
spring security入门小demo
0 0
Spring之路(35)–使用JavaConfig配置Spring+SpringMVC+MyBatis(SSM)项目完整实例
本文目录 1. 背景 2. 本篇讲述方式 3. 新建项目 4. 导入jar包 5. 配置web项目 6. 配置Spring容器 6.1 将xml配置改为配置类 6.2 修改sqlSessionFactory配置 6.3 修改dataSource配置 6.4 修改MapperScannerConfigurer配置 6.5 修改扫描包 6.6 其他配置 7. 配置mybatis-config.xml 8. 编写映射文件 9. 开发各层逻辑代码 10. 总结
0 0
Springboot整合mybatis框架(含实例Demo)
最近要交一份project项目作业,前后端分离,我负责后端,选用了Springboot+mybatis进行整合操作。 一.前期准备: 开发使用的IDE为IntelliJ IDEA:https://www.
2772 0
eclipse中spring的Spring JdbcTemplate访问access的简易实现
修改上一篇博文中的配置文件和代码,让我们来看看如何访问一个本地access的mdb文件数据库。 首先下图为被访问的access文件的ip地址和存储路径及文件名。 下图为access文件中的某一个表的概要内容 下图表示eclipse所在的就是同一台电脑 文档结构与前一篇博文完全相同,只是修改了spring配置文件以及sql语句 1.
2328 0
《Springboot极简教程》使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App
使用Spring Boot, JPA, Mysql, ThymeLeaf,gradle, Kotlin快速构建一个CRUD Web App Thymeleaf is a modern server-side Java template engine for both web and standalone environments.
1004 0
spring + struts + hibernate demo
源码下载:http://download.csdn.net/download/knight_black_bob/9332831           web.xml sshdemo contextConfigLocation classpath:applicationContext.
686 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战
立即下载
Spring Cloud Alibaba - 重新定义 Java Cloud-Native
立即下载
Java Spring Boot开发实战系列课程【第6讲】:Spring Boot 2.0实战MyBatis与优化(Java面试题)
立即下载