熬之滴水成石:Spring--精简的J2EE(7)
49--持久性
关于持久性在最早的Delphi单元中,就曾介绍过。持久性是数据库中读取,保存,或删除数据的过程。毫无疑问持久性是web应用程序中的一个重要的特性,之前都是用JDBC来完成只要用到读取和显示数据。多少年来,这一直是Java最令人厌恶的部分。诚然你可以使用JDBC与数据库交互,当前大多数应用程序与数据库交互是为了存取资料。毕竟,JDBC API为从Java访问数据库提供了一个统一的标准。但是,JDBC代码编码还是比较繁琐的,需要考虑很多的异常,你要知道出现异常时要知道怎么去抓取异常和关闭数据库连接,当然不同的数据库所提供的JDBC标准也是不一样的。
在06年我们使用Spring时,发现他对于持久性支持非常到位。对于JDBC框架将JDBC的检测式的异常转化一个公共的RuntimeException结构。对于异常提供了精确的出错信息些。在Spring中实现持久性策略有几种方式:Hibernate, iBATIS, JDBC, JDO和OJB。实际中我用过了前面2者,Hibernate使用起来在Demo后者学习阶段感觉还是不错的,它也是持久层应用中流行的选择。但在实际的项目中,感觉Hibernate真正运用于项目还是比较麻烦的,它比较适合那种先有设计类然后再有数据库的开发方式,然而在我经历的项目多半是集成项目,数据库模型早就存在了。所以这个时候iBATIS更加适合这样的项目,事实上作为开发人员只要在XML文件中预先写好SQL语句就可以了。如果我们从一个基于JDBC的应用程序迁移到iBATIS是一个非常简单的事情。iBATIS不但快速和高效,而且隐藏了SQL。利用iBATIS的SQL Map,开发人员可以将SQL写进XML文件,基于它们的查询结果来填充对象。和Spring/Hibernate组合一样,
iBATIS是个开源的持久性框架,允许你对一种关系数据库使用模型对象进行操作。相比Hibernate可以使用使用SQL语句,同时也利用JDBC。让一切在简单的XML文件中完成此操作,从Java类中制取SQL。这样看来ibatis并不是一个O/R的映射,只是一种Data Mapper。ibatis有两种模式:Data Mapper和Metadata Mapping。区别在于,ORM(Metadata Mappers)将类映射到数据库的表,iBATIS (Data Mapper)将输入和输出映射到一个接口。很多时候当我们都是基于成型的数据库,你需要将多个表中的数据取出来填充到一个对象时,像iBATIS这样的Data Mapper就有用武之地。在Spring中可以简单配置并使用它们。配置BATIS只需要三个jar包即可,一般是 ibatis-common.jar这是一个公共类的jar包。另一个是ibatis-sqlmap.jar供SQLMaps调用的。还有一个commons-logging.jar,日志框架。
集成iBATIS,先为对象创建一个SQL Map。其实是一个XML文件,包含将查询的结果映射到对象的SQL 语句。sql-mapsconfig.xml,用来指明对象的.xmlSQL Map的位置。applicationContext-ibatis.xml用来配置数据库的Data Source。集成的便是依靠sqlclientfactory。transactionManager将指定一个JDBC 连接从指定数据库绑定到线程上,让每个datasource可以使用一个独立的线程连接。iBATIS提供了各种缓存的策略在对象的SQL.xml里添加cachemode即可。
(未完待续.......)
熬之滴水成石:Spring--精简的J2EE(7)的更多相关文章
- 熬之滴水成石:最想深入了解的内容--windows内核机制(15)
66--内存管理(4) 说说在windows中内存空间初始化的事,开始的开始通过处理器的分页机制,预先建立相应足够的页表以便页表来访问物理内存.预先建立的这个物理内存的是windows自己的加载程序, ...
- 熬之滴水成石:最想深入了解的内容--windows内核机制(6)
58 进程和线程(3) 说完进程再说说线程,线程相比于进程其实有更多可说的内容.首先实现线程调用的数据结构是个栈,该栈记录了调用方法的信息这里面也包括了函数调用及返回的地址.线程肯定是属于某个进程,其 ...
- 输出日志实例改成用Spring的AOP来实现
1.采用Interception Around通知的形式实现 Interception Around通知会在Join Point的前后执行,实现Interception Around通知的类需要实现接 ...
- 学习源码的第八个月,我成了Spring的开源贡献者
@ 目录 我的经历 碰到的问题 1.担心闹乌龙 2.不知道要怎么提交 3.英文 4.担心问题描述的不清楚 给你的建议 我的经历 关注我的朋友都知道,关注两个字划重点,要考! 我最近一直在写Spring ...
- spring入门教程——笔记
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...
- Spring Boot 快速入门笔记
Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...
- Spring系列(零) Spring Framework 文档中文翻译
Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...
- 不错的Spring学习笔记(转)
Spring学习笔记(1)----简单的实例 --------------------------------- 首先需要准备Spring包,可从官方网站上下载. 下载解压后,必须的两个包是s ...
- 学会使用Spring注解
概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 ...
随机推荐
- view components介绍
view components介绍 在ASP.NET MVC 6中,view components (VCs) 功能类似于虚拟视图,但是功能更加强大. VCs兼顾了视图和控制器的优点,你可以把VCs ...
- POJ 3928 & HDU 2492 Ping pong(树阵评价倒数)
主题链接: PKU:http://poj.org/problem?id=3928 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Descript ...
- Python 图论工具
networkx: 一个用Python语言开发的图论与复杂网络建模工具, 内置了经常使用的图与复杂网络分析算法, 能够方便的进行复杂网络数据分析.仿真建模等工作. 依赖工具: numpy pypar ...
- WEB安全实战(五)XSS 攻击的第二种解决方式(推荐)
序 说到 XSS 攻击,前边已经有两篇文章在讲这个事了,这次又拿出来说,主要是针对近期工作中的一些新的问题.那么之前是怎么解决问题的呢?为什么又要换解决方式?以下就具体的跟大家分享一下. 旧方案 公司 ...
- selenium2入门 断言失败自动截图 (四)
一般web应用程序出错过后,会抛出异常.这个时候能截个图下来,当然是极好的. selenium自带了截图功能. //获取截图file File scrFile= ((TakesScreenshot)d ...
- IE8下div中2个button仅仅显示一个
IE8下div中2个button仅仅显示一个,代码例如以下: <div id="adviceType" style="display: none;" &g ...
- Java中“==”和equals()方法
这是在Thinking in Java中看到的. 第一个程序 public class Exponents { public static void main(String []args){ Inte ...
- Android 获取截图 并将其保存到本地sd在卡路径
/** * 获取当前屏幕和保存截图 */ private void GetandSaveCurrentImage() { //1.构建Bitmap WindowManager windowManage ...
- jQuery中开发插件的两种方式
jQuery中开发插件的两种方式(附Demo) 做web开发的基本上都会用到jQuery,jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数 ...
- linux find命令之exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...