熬之滴水成石: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 映射时,我们就不需要指定 ...
随机推荐
- MVC页面声命周期
MVC页面声命周期 ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期 开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们, ...
- Ubuntu终端字体颜色方案
默认: 蓝色代表该文件夹: 绿色代表可运行文件. 红色表示压缩文件. 浅蓝色表示链接文件: 灰色表示其它文件: 红色闪烁表示链接的文件有问题了 黄色表示设备文件. 非常不爽怎么办,改! # Attri ...
- 安装Visual Source Safe 2005 - 初学者系列 - 学习者系列文章
本文介绍微软的文档管理工具Visual Source Safe 2005的安装 从下列地址获取该工具: ed2k://|file|en_vss_2005.iso|108048384|C4BEC1EC3 ...
- 【DateTime格式大全
】
DateTime dt = DateTime.Now;// Label1.Text = dt.ToString();//2005-11-5 13:21:25// Label2.Text = ...
- sql 事务日志传输
原文:sql 事务日志传输 概述 可以使用日志传送将事务日志不间断地从一个数据库(主数据库)发送到另一个数据库(辅助数据库).不间断地备份主数据库中的事务日志,然后将它们复制并还原到辅助数据库,这将使 ...
- 在PHP中连接数据库时获取最后的一个ID
在SQL中获取最后的一个id 只需要加上where条件对id进行排序就可以了 但是在PHP中 有一种最新的方法 使用mysql_insert_id();就可以获得最大的id .
- sql材料分级统计及汇总案例参考
--第一步:根据系统编号.列.单价分组求和 select CLBH,DJ,sum(SL) as SL,sum(JE) as JE,Lie into #TempSZCMX from #ShouZhiCu ...
- readonly和const的区别
readonly与const的区别1.const常量在声明的同时必须赋值,readonly在声明时可以不赋值2.readonly只能在声明时或在构造方法中赋值(readonly的成员变量可以根据调用不 ...
- WCF RIA Services异常
.svc处理程序映射缺失导致的WCF RIA Services异常 在确定代码.编译结果和数据库都正常的情况下,无法从数据库取到数据.错误提示:Sysyem.Net.WebException:远程服务 ...
- VS2010生成安装包制作步骤
VS2010生成安装包制作步骤 在VS2010中文旗舰版本中生成winForm安装包,可以复制你电脑中的开发环境,避免你忘记了一下配置然后在别的机器上运行不起来.也省去了Framwork的安装. ...