熬之滴水成石: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 映射时,我们就不需要指定 ...
随机推荐
- 多线程学习之BlockingQueue
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列 类,为我们快速搭建高质量的多线程程序带来极大的 ...
- Linux下给mysql创建用户分配权限
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- Linux C 多线程
原文:Linux C 多线程 linux下C语言多线程编程 #include <pthread.h> #include <stdio.h> #include <sys/t ...
- ExcelReport源码解析
ExcelReport第二篇:ExcelReport源码解析 导航 目 录:基于NPOI的报表引擎——ExcelReport 上一篇:使用ExcelReport导出Excel 下一篇:扩展元素 ...
- MPEG-DASH on IIS Practice in Action-attach
1. 准备 IIS Media Service已经安装准备好(如上),注意需要在2008上安装,2003安装不了,或者就算能安装也很麻烦 一个或多个码率的媒体文件如MP4已经准备好 DASH MPD ...
- ActionScript GifPlayer的修改
ActionScript不能播放gif格式的图片,在做as项目的时候如果需要用到加载gif动画图片时,就需要引入第三方包. 常用的第三方包是GifPlayer,在github上可以找到该项目的源代码C ...
- mysql设置root的密码
mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
- windows 开机自动登录,或者说是开机后自动进入桌面
这篇文章,对于XP以及XP以上版本有效,包括Windows Server服务器操作系统. 1.原理 --Windows自动登录的原理是,开始后,自动输入登录所使用的账号的用户名和密码,并且自动进入桌面 ...
- Perl基础(1)chop与chomp的区别
chop是去掉字符串的最后一个字符 chomp是去掉"$/"指定的结尾符号 测试程序一: [perl] #!/bin/perl $tmp = "sincere" ...
- ORACLE抽象数据类型
ORACLE抽象数据类型 *抽象数据类型*/1,抽象数据类型 概念包含一个或多个子类型的数据类型不局限于ORACLE的标准数据类型可以用于其他数据类型中 2,创建抽象数据类型 的语法(必须用NOT F ...