Spring 4 官方文档学习(十)数据访问之DAO支持
1、介绍
Spring 中 Data Access Object (DAO)支持 的目标是以一种一致的方式更简单的使用JDBC、Hibernate、JPA或JDO等数据访问技术。可以在前面说的几种数据访问技术之间随意切换,也不必担心彼此的异常捕获工作。
2、一致的异常层级
Spring将特定技术独有的异常如SQLException等翻译成了Spring自己的异常类层级 -- 根异常是 DataAccessException 。这些异常封装了原有的异常。
除了JDBC异常,Spring还封装了Hibernate独有的异常,将它们转成一组运行时异常 -- 还有JDO和JPA异常。这样可以处理大多数的持久层异常 -- 不必担心各种catch-and-throw模块和异常声明!(当然,你仍然可以使用独有的异常)
3、用于配置DAO或Repository类的注解
最佳方式是使用@Repository注解,这样可以不必配置XML。
@Repository
public class SomeMovieFinder implements MovieFinder {
// ...
}
任何DAO或Repository实现都需要依赖持久层技术来访问持久层资源,如JDBC DataSource、EntityManager等。最简单的办法就是使用@Autowired、@Inject、@Resource或@PersistenceContext来注入。例如,针对JPA repository:
@Repository
public class JpaMovieFinder implements MovieFinder { @PersistenceContext
private EntityManager entityManager; // ... }
如果使用经典的Hibernate APIs,可以注入SessionFactory:
@Repository
public class HibernateMovieFinder implements MovieFinder { private SessionFactory sessionFactory; @Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} // ... }
典型的JDBC支持。可以初始化时注入DataSource,就可以初始化一个JdbcTemplate:
@Repository
public class JdbcMovieFinder implements MovieFinder { private JdbcTemplate jdbcTemplate; @Autowired
public void init(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
} // ... }
Spring 4 官方文档学习(十)数据访问之DAO支持的更多相关文章
- Spring 4 官方文档学习(十二)View技术
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...
- Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...
- Spring 4 官方文档学习(十一)Web MVC 框架
介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ...
- Spring Boot 官方文档学习(一)入门及使用
个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...
- Spring boot官方文档学习(一)
个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...
- Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC
内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(一)
题外话:本篇是对之前那篇的重排版.并拆分成两篇,免得没了看的兴趣. 前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的 ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)
接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion
本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...
- Spring 4 官方文档学习(十四)WebSocket支持
个人提示:如果需要用到页面推送,高频且要低延迟,WebSocket无疑是最佳选择.否则还是轮询和long polling吧. 做了一个小demo放在码云上,有兴趣的可以看一下,简单易懂:websock ...
随机推荐
- mysql-5.7 group commit 详解
一.mysql group commit 的官方定义: InnoDB, like any other ACID-compliant database engine, flushes the redo ...
- 【转】如何遍历json数据
var value = { "china":{ "hangzhou":{"item":"1"}, "shang ...
- xtrabackup迁移单独一张INNODB表
- Clojure 的 Enlive 库尝试
Enlive 是一个 Clojure 下的 html 模板引擎.其特别之处在于,它既没有发明任何 html 内嵌的模板 DSL 语法:也不会混杂代码和表现. 一切的一切,都是按下列模型定义的次序执行的 ...
- python2.7 跨文件全局变量的方法
有关python实现跨文件全局变量的方法. 在使用Python编写的应用的过程中,有时会遇到多个文件之间传递同一个全局变量的情况.文件1:globalvar.py #!/usr/bin/env pyt ...
- 基于FPGA的线阵CCD实时图像采集系统
基于FPGA的线阵CCD实时图像采集系统 2015年微型机与应用第13期 作者:章金敏,张 菁,陈梦苇2016/2/8 20:52:00 关键词: 实时采集 电荷耦合器件 现场可编程逻辑器件 信号处理 ...
- httpwebrequest异步参考
http://www.cnblogs.com/SanMaoSpace/archive/2011/07/27/2118133.html http://www.cnblogs.com/qianlifeng ...
- 不能将参数1从“const char []”转换为“LPCTSTR
今天在使用vs2008+MFC时候,使用editControl的replacesel(“”)发生报错.如下::不能将参数1从“const char []”转换为“LPCTSTR” 其解决方案就是, 在 ...
- 部署hadoop2.7.2 集群 基于zookeeper配置HDFS HA+Federation
转自:http://www.2cto.com/os/201605/510489.html hadoop1的核心组成是两部分,即HDFS和MapReduce.在hadoop2中变为HDFS和Yarn.新 ...
- vue使用sweetalert2弹窗插件
1). 安装 sweetalert2 npm install sweetalert2@7.15.1 --save 2). 封装 sweetalert2 在 src 新建 plugins 文件夹,然后新 ...