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)的更多相关文章

  1. 熬之滴水成石:最想深入了解的内容--windows内核机制(15)

    66--内存管理(4) 说说在windows中内存空间初始化的事,开始的开始通过处理器的分页机制,预先建立相应足够的页表以便页表来访问物理内存.预先建立的这个物理内存的是windows自己的加载程序, ...

  2. 熬之滴水成石:最想深入了解的内容--windows内核机制(6)

    58 进程和线程(3) 说完进程再说说线程,线程相比于进程其实有更多可说的内容.首先实现线程调用的数据结构是个栈,该栈记录了调用方法的信息这里面也包括了函数调用及返回的地址.线程肯定是属于某个进程,其 ...

  3. 输出日志实例改成用Spring的AOP来实现

    1.采用Interception Around通知的形式实现 Interception Around通知会在Join Point的前后执行,实现Interception Around通知的类需要实现接 ...

  4. 学习源码的第八个月,我成了Spring的开源贡献者

    @ 目录 我的经历 碰到的问题 1.担心闹乌龙 2.不知道要怎么提交 3.英文 4.担心问题描述的不清楚 给你的建议 我的经历 关注我的朋友都知道,关注两个字划重点,要考! 我最近一直在写Spring ...

  5. spring入门教程——笔记

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  6. Spring Boot 快速入门笔记

    Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...

  7. Spring系列(零) Spring Framework 文档中文翻译

    Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...

  8. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  9. 学会使用Spring注解

      概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 ...

随机推荐

  1. Asp.Net MVC5入门学习系列②

    原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...

  2. HTML静态分页(形如:首页,上一页,下一页,尾页)

    在HTML中有时候我们会用到静态分页,一次拿回一定量的数据结果条目,我们会以形如:第2页,共12页  首页 上一页 下一页 尾页 的方式进行静态分页,以下是该种静态分页的代码,供兄弟姐妹们参考. &l ...

  3. weblogic启动报错--com.octetstring.vde.backend.BackendRoot

    错误现象: 使用bea用户启动weblogic时报错,错误信息如下: <2014-7-29 下午07时47分23秒 CST> <Notice> <Log Manageme ...

  4. C# 打开网页兼容Windows8.1的方式

    方法:指定浏览器 void WebWithDefaultBrower() { string name = string.Empty; try { string mainKey = @"htt ...

  5. [翻译]如何编写GIMP插件(一)

    近期想尝试编写gimp插件,在gimp官网看到了三篇简明教程,顺便翻译了下,由于本人英文,计算机知识有限,文中难免有warning,error出现,欢迎指正. <How to write a G ...

  6. VBOX安装Centos设置分辨率为1366x768[已解决]

    最近想了解下GTK+,但是对于直接在系统上搭建环境有点心里阴影,怕又把桌面玩挂,所以打算在虚拟机中先试试 本来打算使用Fedora的,怕gnome太吃资源所以下了个xfce的,不过貌似有BUG,无法安 ...

  7. POJ 1579-Function Run Fun(内存搜索)

    Function Run Fun Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16503   Accepted: 8514 ...

  8. .net操作PDF的一些资源(downmoon收集)

    因为业务需要,搜集了一些.net操作pdf的一些资源,特在此分享. 1.如何从 Adobe 可移植文档格式 (PDF) 文件中复制文本和图形 http://support.microsoft.com/ ...

  9. easyui datagrid显示进度条控制操作

    在当我们需要控制时间前台实际项目页面datagrid显示进度条的数据加载时运行,和datagrid默认情况下只在有url加载运行时的数据显示方式的进度条.下面的代码手动控制: 打开一个进度条: $(' ...

  10. 完整的堆栈JavaScript路(十五)HTML5 focus 扩大 (扩展点)

    HTML5 加入辅助管理 focus 产品特点,  有办法获得焦点文档; 页面加载,用户输入(通常由tab债券).和 调用代码focus()功能. HTML5新的属性和方法,辅助管理的重点: docu ...