快速业务通道

使用JDBC进行数据访问 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
iObjectFactoryBean可以从JNDI中得到一个DataSource 并将DataSource的引用给别的bean。要切换到另一个DataSource 就仅仅是一个配置的问题:你甚至可以用一个非JNDI的DataSource来替换 FactoryBean的定义!

SmartDataSource

实现这个接口的类可以提供一个关系数据库的连接。 它继承javax.sql.DataSource接口,使用它可以知道在一次数据库操作后, 是否需要关闭连接。如果我们需要重用一个连接,那么它对于效率是很有用的。

使用JDBC进行数据访问(4)

时间:2011-03-14

AbstractDataSource

这个实现Spring的DataSource的抽象类,关注一些"无趣"的东西。 如果你要写自己的DataSource实现,你可以继承这个类。

SingleConnectionDataSource

这个SmartDataSource的实现封装了单个在使用后不会关闭的连接。 所以很明显,它没有多线程的能力。

如果客户端代码想关闭这个认为是池管理的连接,比如使用持久化工具的时候, 需要将suppressClose设置成true。这样会返回一个禁止关闭的代理来接管物理连接。 需要注意的是,你将无法将不再能将这个连接转换成本地Oracle连接或者类似的连接。

它的主要作用是用来测试。例如,它可以很容易的让测试代码脱离应用服务器测试,而只需要一个简易的JNDI环境。 和DriverManagerDataSource相反,它在所有的时候都重用一个连接, 以此来避免建立物理连接过多的消耗。

DriverManagerDataSource

这个SmartDataSource的实现通过bean的属性配置JDBC驱动, 并每次都返回一个新的连接。

它对于测试或者脱离J2EE容器的独立环境都是有用的, 它可以作为不同的ApplicationContext中的数据源bean, 也可以和简易的JNDI环境一起工作。被认为是池管理的Connection.close()操作 的调用只会简单的关闭连接,所以任何使用数据源的持久化代码都可以工作。

DataSourceTransactionManager

这个PlatformTransactionManager的实现是对于单个JDBC数据源的。 从某个数据源绑定一个JDBC连接到一个线程,可能允许每个数据源一个线程连接。

应用程序的代码需要通过DataSourceUtils.getConnection(DataSource)取得JDBC连接代替 J2EE标准的方法DataSource.getConnection。这是推荐的方法, 因为它会抛出org.springframework.dao中的unchecked的异常代替SQLException。 Framework中所有的类都使用这种方法,比如JdbcTemplate。 如果不使用事务管理,那么就会使用标准的方法,这样他就可以在任何情况下使用。

支持自定义的隔离级,以及应用于适当的JDBC statement查询的超时。 要支持后者,应用程序代码必须使用JdbcTemplate或者对每一个创建的statement 都调用DataSourceUtils.applyTransactionTimeout。

因为它不需要容器支持JTA,在只有单个资源的情况下, 这个实现可以代替JtaTransactionManager。 如果你坚持需要的连接的查找模式,两者间的切换只需要更换配置。 不过需要注意JTA不支持隔离级。

JDBC操作的Java对象化

org.springframework.jdbc.object包由一些允许你 以更面向对象的方式访问数据库的类组成。你可以执行查询并获得一个包含业务对象的List, 这些业务对象关系数据的字段值映射成它们的属性。你也可以执行存储过程,更新,删除和插入操作。

SqlQuery

这是一个表示SQL查询的可重用的而且线程安全的对象。 子类必须实现newResultReader()方法来提供一个对象,它能在循环处理ResultSet的时候保存结果。 这个类很少被直接使用,而使用它的子类MappingSqlQuery,它提供多得多的方法 将数据行映射到Java类。MappingSqlQueryWithParameters 和UpdatableSqlQuery是继承SqlQuery的另外两个实现。

MappingSqlQuery

MappingSqlQuery是一个可以重用的查询对象, 它的子类必须实现抽象方法mapRow(Result

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号