spring对Dao的支持

本文介绍Spring框架提供的DAO支持,旨在简化不同数据访问技术(如JDBC、Hibernate和JDO)的使用,通过提供一致的异常处理机制和抽象类,使开发者能够更便捷地在这些技术间切换,并减少异常处理代码。

Chapter 10. DAO支持

10.1. 简介

Spring提供的DAO(数据访问对象)支持目的是便于以一致的方式使用不同的数据访问技术,如JDBC,Hibernate或者JDO等。它不仅可以让你方便地在这些持久化技术间切换,而且让你在编码的时候不用考虑处理各种技术中特定的异常。

10.2. 一致的异常层次

Spring提供了一种方便的方法,把特定于某种技术的异常,如SQLException,转化为自己的异常,这种异常属于以DataAccessException为根的异常层次。这些异常封装了原始异常对象,这样就不会有丢失任何错误信息的风险。

除了对JDBC异常的封装,Spring也对Hibernate异常进行了封装,把它们从一种专有的checked异常(Hibernate3.0以前的版本),转化为一系列抽象的运行时异常。对JDO也是这样。它可以让你轻松处理大多数持久化异常(这些异常大多是不可恢复的,而且只出现在特定的层次),而不再需要在DAO中编写讨厌的样板式的catch/throw代码块和异常声明。你仍然可以在需要的地方捕获并处理这些异常。就像我们上面提到的,JDBC异常(包括特定于某种数据库方言的异常)也可以被转化为同样的异常层次,这意味着你可以在一致的编程模型下,通过JDBC来执行某些操作。

上述情况适用于Spring支持的各种ORM框架的模板类。如果使用基于拦截器的类,你在应用中就得自己小心处理HibernateExceptionJDOException等,最好是委托给SessionFactoryUtilsconvertHibernateAccessExceptionconvertJdoAccessException等方法。这些方法可以把相应的异常转化为与org.springframework.dao中定义的异常层次相兼容的异常。其中JDOException属unchecked异常,它们也可以被简单地抛出,但这样做在异常处理方面牺牲了通用的DAO抽象。

下图展示了Spring提供的异常层次。(注意图上所包含的异常类只是整个庞大的DataAccessException异常层次中的一部分。)

10.3. 一致的DAO支持抽象类

为了便于以一种一致的方式使用各种数据访问技术,如JDBC、JDO和Hibernate,Spring提供了一套抽象DAO类供你扩展。这些抽象类提供了一些方法,通过它们你可以获得与数据访问技术相关的数据源和其他配置信息。

  • JdbcDaoSupport - JDBC数据访问对象的基类。需要一个DataSource,同时为子类提供JdbcTemplate

  • HibernateDaoSupport - Hibernate数据访问对象的基类。需要一个SessionFactory,同时为子类提供HibernateTemplate。也可以选择直接通过提供一个HibernateTemplate来初始化,这样就可以重用后者的设置,例如SessionFactory,flush模式,异常翻译器(exception translator)等等。

  • JdoDaoSupport - JDO数据访问对象的基类。需要设置一个PersistenceManagerFactory,同时为子类提供JdoTemplate

  • JpaDaoSupport - JPA数据访问对象的基类。需要一个EntityManagerFactory,同时为子类提供JpaTemplate


感谢作者的用心编写,帮助了我了解spring对dao层的了解

原文链接:http://shouce.jb51.net/spring/dao.html

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值