写点什么

Spring 5 中文解析数据存储篇 -DAO 支持

用户头像
青年IT男
关注
发布于: 2020 年 09 月 23 日
Spring 5 中文解析数据存储篇-DAO支持

Spring 核心篇章:


Spring 5 中文解析之核心篇-IoC容器


Spring 5 中文解析核心篇-IoC容器之依赖关系


Spring 5 中文解析核心篇-IoC容器之Bean作用域


Spring 5 中文解析核心篇-IoC容器之自定义Bean性质


Spring 5 中文解析核心篇-IoC容器之BeanDefinition继承与容器拓展点


Spring 5 中文解析核心篇-IoC容器之基于注解的容器配置


Spring 5 中文解析核心篇-IoC容器之类路径扫描和组件管理


Spring 5 中文解析核心篇-IoC容器之JSR330标准注解


Spring 5 中文解析核心篇-IoC容器之基于Java容器配置


Spring 5 中文解析核心篇-IoC容器之Environment抽象


Spring 5 中文解析核心篇-IoC容器之ApplicationContext与BeanFactory


Spring 5 中文解析核心篇-IoC容器之Resources


Spring 5 中文解析核心篇-IoC容器之数据校验、数据绑定和类型转换


Spring 5 中文解析核心篇-IoC容器之SpEL表达式


Spring 5 中文解析核心篇-IoC容器之AOP编程(上)


Spring 5 中文解析核心篇-IoC容器之AOP编程(下)


Spring 5 中文解析核心篇-IoC容器之Spring AOP API


Spring 测试篇章:


Spring 5 中文解析测试篇-Spring测试


Spring 5 中文解析核心篇-集成测试之概要和集成测试注解


Spring 5 中文解析核心篇-集成测试之TestContext(上)


Spring 5 中文解析核心篇-集成测试之TestContext(中)


Spring 5 中文解析测试篇-集成测试之TestContext(下)


Spring 5 中文解析测试篇-Spring MVC测试框架


Spring 5 中文解析测试篇-WebTestClient


Spring 存储篇章:


Spring 5 中文解析数据存储篇-Spring框架的事物支持模型的优势


Spring 5 中文解析数据存储篇-事务同步和声明式事物管理


Spring 5 中文解析数据存储篇-@Transactional使用


Spring 5 中文解析数据存储篇-编程式事物管理


完整电子书地址


Spring 对数据访问对象(DAO)的支持旨在使以一致的方式轻松使用数据访问技术(例如JDBCHibernateJPA)。这使你可以轻松地在上述持久性技术之间进行切换,并且还使你无需担心捕获每种技术特有的异常即可进行编码。


2.1 一致的异常层次结构


Spring 提供了从特定于技术的异常(例如SQLException)到其自己的异常类层次结构的便捷转换,该异常类层次结构以DataAccessException作为根异常。这些异常包装了原始异常,因此你永远不会丢失任何有关可能出错的信息。


除了JDBC异常,Spring 还可以包装JPAHibernate特定的异常,将它们转换为一组集中的运行时异常。这样,你就可以仅在适当的层中处理大多数不可恢复的持久性异常,而不必在 DAO 中使用烦人的样板捕获和抛出块以及异常声明。(尽管如此,你仍然可以在任何需要的地方捕获和处理异常。)如上所述,JDBC异常(包括特定于数据库的方言)也被转换为相同的层次结构,这意味着你可以在一致的编程模型中使用JDBC执行某些操作。


在 Spring 对各种 ORM 框架的支持中,上述讨论对于各种模板类均适用。如果使用基于拦截器的类,应用程序必须关心处理HibernateExceptionsPersistenceExceptions本身,最好是通过分别委托给SessionFactoryUtilsconvertHibernateAccessException(..)convertJpaAccessException()方法。这些方法将异常转换为与org.springframework.dao异常层次结构中的异常兼容的异常。由于未选中PersistenceException,因此它们也可能被抛出(不过,在异常方面牺牲了通用的 DAO 抽象)。


下图显示了 Spring 提供的异常层次结构。(请注意,图像中详细说明的类层次结构仅显示整个DataAccessException层次结构的子集。)



2.2 用于配置 DAO 或存储类的注解


确保你的数据访问对象(DAO)或存储库提供异常转换的最佳方法是使用@Repository注解。此注解还使组件扫描支持可以查找和配置 DAO 和存储库,而不必为其提供 XML 配置。以下示例显示了如何使用@Repository注解:


@Repository //1public class SomeMovieFinder implements MovieFinder {    // ...}
复制代码


  1. @Repository 注解


@Repositorypublic class JpaMovieFinder implements MovieFinder {
@PersistenceContext private EntityManager entityManager;
// ...}
复制代码


如果使用经典的Hibernate API,则可以注入SessionFactory,如以下示例所示:


@Repositorypublic class HibernateMovieFinder implements MovieFinder {
private SessionFactory sessionFactory;
@Autowired public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; }
// ...}
复制代码


我们在此显示的最后一个示例是对典型JDBC支持的。你可以将DataSource注入初始化方法或构造函数中,在此方法中,你可以使用此DataSource创建JdbcTemplate和其他数据访问支持类(例如SimpleJdbcCall等)。以下示例自动装配数据源:


@Repositorypublic class JdbcMovieFinder implements MovieFinder {
private JdbcTemplate jdbcTemplate;
@Autowired public void init(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); }
// ...}
复制代码


有关如何配置应用程序上下文以利用这些注解的详细信息,请参见每种持久性技术的特定介绍。


作者


个人从事金融行业,就职过易极付、思建科技、某网约车平台等重庆一流技术团队,目前就职于某银行负责统一支付系统建设。自身对金融行业有强烈的爱好。同时也实践大数据、数据存储、自动化集成和部署、分布式微服务、响应式编程、人工智能等领域。同时也热衷于技术分享创立公众号和博客站点对知识体系进行分享。关注公众号:青年 IT 男 获取最新技术文章推送!


博客地址: http://youngitman.tech


CSDN: https://blog.csdn.net/liyong1028826685


微信公众号: 


技术交流群: 


发布于: 2020 年 09 月 23 日阅读数: 56
用户头像

青年IT男

关注

站在巨人肩上看得更远! 2018.04.25 加入

从事金融行业,就职过易极付、思建科技、网约车平台等一流技术团队,目前就职于银行负责支付系统建设。对金融行业有强烈的爱好。实践大数据、数据存储、自动化集成和部署、分布式微服务、响应式编程、人工智能等领域

评论

发布
暂无评论
Spring 5 中文解析数据存储篇-DAO支持