网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Mock 概述以及用 Mock Object 进.
.用SQLJ开发数据库(4).
.Swing包概览.
.最新消息:Hibernate 3.1发.
.一个简单的代理服务器.
.Spring XML配置十二个最佳实.
.教你学会XML Web Service 的安全.
.JavaApplet编程响应鼠标键盘.
.如何遍历并执行一个对象的所有可.
.tomcat5.5.9+sql2000数据库连接池.
.软件开发规范(2).
.驯服Tiger之深入研究枚举类型.
.JBOSS4数据源配置大全(一).
.J2EE设计模式浅谈(1).
.敏捷开发的必要技巧:处理不合适.
.动态调用动态语言之Java脚本API.
.心存测试概念进行代码设计时的七.
.0. Preface: Core Technologies.
.Java_util_package.
.写Java程序最容易犯的21种错误.

Cook JDBC with SpringFramework

发表日期:2008-1-5


    我们的目标是希望在任何使用JDBC的场合都能够利用SpringFramework的JDBC Support Module,同时尽可能少地引入不必要的元素。因此,我们假定不使用J2EE环境提供的任何服务,也不使用SpringFramework的IoC容器和AOP两大特性。

    首先,我们需要的自然是一个DataSource。在非J2EE环境下,可以使用Jakarta的commons-dbcp来得到一个DataSource的实例。我们选择使用SharedPoolDataSource,它提供了一个close()方法,在程序结束前调用它可以关闭所有的Connection,释放相关的资源。

    接着,将spring-core.jar和spring-dao.jar置入CLASSPATH。事实上,我们将要用到的class几乎全部都在spring-dao.jar中,之所以需要spring-core.jar是因为NestedRuntimeException,所有JDBC Support Module中的异常都直接或间接继续自这个Runtime Exception。由此也可以看出,我们只是在受控制的情况下引入了SpringFramework的一小部分而已。

    下面,我们就可以开始逐步设置和组装我们的基础设施。

org.springframework.jdbc.core.JdbcTemplate

    JdbcTemplate是整个package的核心,所有的JDBC调用流程都通过它来完成,开发者只需要实现对应的callback接口即可。JdbcTemplate是无状态且线程安全的,也就是说在整个系统中只需要创建一个实例就够了。创建它的时候需要提供DataSource作为参数。

    JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
    jdbcTemplate.afterPropertiesSet();

    afterPropertiesSet()方法是对InitializingBean接口的实现,假如实例是由IoC容器治理的,则容器会自动调用。由于我们并没有使用IoC容器,所以需要在创建实例后主动调用该方法。

org.springframework.transaction.support.TransactionTemplate

    TransactionTemplate帮助我们以编程的方式实现事务控制。同样的,开发者也是通过实现callback接口来使用它。TransactionTemplate也是无状态且线程安全的。创建TransactionTemplate的实例需要提供一个PlatformTransactionManager的实例,在SpringFramework中有多种PlatformTransactionManager的实现类,提供多种事务控制的途径。基于前面设定的限制,我们选择DataSourceTransactionManager。


    PlatformTransactionManager platformTransactionManager = 
        new DataSourceTransactionManager(dataSource);
    TransactionTemplate transactionTemplate =
        new TransactionTemplate(platformTransactionManager);
    transactionTemplate.afterPropertiesSet();

org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer

    在数据库中插入数据的时候,需要获得唯一的Long或Integer类型的值做为主键。DataFieldMaxValueIncrementer提供了这样一个途径,而具体的实现方法则因各种数据库系统而异。简单地说,假如数据库系统本身提供了Sequences(例如Oracle),则直接从sequences取得所需的序列值,假如数据库系统不支持Sequences(例如mysql),则通过一个单独的Table来保存和产生新的序列值。每个DataFieldMaxValueIncrementer的实例都需要有一个对应的Sequences或者Table,换句话说,开发者要选择是整个系统共用同一个Incrementer实例,还是对应每个Table使用各自专有的Incrementer实例。目前SpringFramework已经提供了针对Oracle、DB2、PostgreSQL、MySQL,HSQL五种数据库的实现,支持从超重量级直到超轻量级的常见数据库系统,而且,要自己编写针对其它数据库系统的实现也并非难事。在例子中我们选择使用HSQL数据库,创建一个HsqlMaxValueIncrementer的实例需要提供DataSource、table name、column name。


上一篇:Java how to program(Third Edition)——我的java手记(四) 人气:775
下一篇:Java how to program(Third Edition)——我的java手记(二) 人气:558
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐