<b>操纵JDBC举行数据访谒</b>[Java编程]
本文“<b>操纵JDBC举行数据访谒</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Spring供应的JDBC抽象框架由core, datasource,object和 support四个差别的包构成.
就和它名字的表示一样,org.springframework.jdbc.core包里定义了供应核心功效的类. 此中有各种SQLExceptionTranslator和DataFieldMaxValueIncrementer的实现以及一个用于JdbcTemplate的DAO底子类.
org.springframework.jdbc.datasource包里有一个用以简化数据源拜候的工具类, 以及各种数据源的简单实现,以被用来在J2EE容器之外不经改正地测试JDBC代码. 这个工具类供应了从JNDI得到衔接和大概用到的关闭衔接的静态办法. 它支持绑定线程的衔接,比方被用于DataSourceTransactionManager.
接着,org.springframework.jdbc.object包里是把关系数据库的查询, 更新和存储历程封装为线程安全并可重用对象的类. 这中方法模拟了JDO,固然查询返回的对象理所当然的“脱离”了数据库衔接. 这个JDBC的高层抽象依靠于org.springframework.jdbc.core包中所实现的底层抽象.
最后在org.springframework.jdbc.support包中你可以找到 SQLException的转换功效和一些工具类.
在JDBC调用中被抛出的非常会被转换成在定义org.springframework.dao包中的非常. 这意味着利用Spring JDBC抽象层的代码不需求实现JDBC大概RDBMS特定的错误处理. 全部的转换后的非常都是unchecked,它答应你捕捉那些你可以恢复的非常, 并将别的的非常传送给调用者.
JdbcTemplate
这是在JDBC核心包中最重要的类.它简化了JDBC的利用, 因为它处理了资源的成立和释放. 它帮忙你避免一些常见的错误,比方忘了总要关闭衔接.它运行核心的JDBC工作流, 如Statement的成立和履行,而只需求利用程序代码供应SQL和提取后果.这个类履行SQL查询, 更新大概调用存储历程,模拟后果集的迭代以及提取返回参数值.它还捕捉JDBC的非常并将它们转换成 org.springframework.dao包中定义的通用的,可以供应更多信息的非常体系.
利用这个类的代码只需求按照明肯定义的一组契约来实现回调接口. PreparedStatementCreator回调接口成立一个由该类供应的衔接所成立的PreparedStatement, 并供应SQL和任何必要的参数.CallableStatementCreateor实现一样的处理, 只是它成立了CallableStatement.RowCallbackHandler接口从数据集的每一行中提取值.
这个类可以直接通过数据源的引用实例化,然后在服务中利用, 也可以在ApplicationContext中产生并作为bean的引用给服务利用. 注意:数据源该当老是作为一个bean在ApplicationContext中配置, 第一种情形它被直接传送给服务,第二种情形给JdbcTemplate. 因为这个类把回调接口和SQLExceptionTranslator接口作为参数表示,所以没有必要为它定义子类. 这个类履行的全部SQL城市被记入日记.
数据源
为了从数据库得到数据,我们需求得到数据库的衔接. Spring采取的办法是通过一个数据源. 数据源是JDBC标准的一部份,它可以被认为是一个通用的衔接工厂. 它答应容器大概框架将在利用程序代码中躲藏衔接池和事件的管理操作. 开辟者将不需求知道衔接数据库的任何细节,那是设置数据源的管理员的责任. 固然你极大概在开辟大概测试的时刻需求兼任两种角色,但是你并不需求知道实际产品中的数据源是若何配置的.
利用Spring的JDBC层,你可以从JNDI得到一个数据源,也可以通过利用Spring发行版供应的实现自己配置它. 后者关于脱离Web容器的单元测试是非常便利的. 我们将在本节中利用DriverManagerDataSource实现,当然今后还会提到其他的一些的实现. DriverManagerDataSource和传统的方法一样获得JDBC衔接. 为了让DriverManager可以装载驱动类,你必须指定JDBC驱动完好的类名. 然后你必须供应相关于各种JDBC驱动的差别的URL.你必须参考你所用的驱动的文档,以得到需求利用的精确参数. 最后,你还必须供利用来衔接数据库的用户名和密码 下面这个例子阐明若何配置DriverManagerDataSource:
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName( "org.hsqldb.jdbcDriver");
dataSource.setUrl( "jdbc:hsqldb:hsql://localhost:");
dataSource.setUsername( "sa");
dataSource.setPassword( "");
10.2.3. SQLExceptionTranslator
SQLExceptionTranslator是一个需求实现的接口, 它被用来处理SQLException和我们的数据拜候非常org.springframework.dao.DataAccessException之间的转换.
实现可以是通用的(比方利用JDBC的SQLState值),也可认为了更高的切确度特别化 (比方利用Oracle的ErrorCode).
SQLErrorCodeSQLExceptionTranslator 是SQLExceptionTranslator的实现,它被默许利用.比供应商指定的SQLState更为切确. ErrorCode的转换是基于被保存在SQLErrorCodes型的JavaBean中的值. 这个类是由SQLErrorCodesFactory成立并填充的,就像它的名字阐明的, SQLErrorCodesFactory是一个基于一个名为"sql-error-codes.xml"的配置文件的内容成立SQLErrorCodes的工厂. 这个文件带有供应商的码一同公布,并且是基于DatabaseMetaData信息中的DatabaseProductName,合适当前数据库的码会被利用.
以上是“<b>操纵JDBC举行数据访谒</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |