Spring JDBC抽象框架简化Web数据库开辟[Java编程]
本文“Spring JDBC抽象框架简化Web数据库开辟[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
一.引言
Spring是一个轻量级的利用程序框架.在很多情形中,Spring都可以杰出地代换传统的由Java EE利用程序服务器所供应的服务.Spring既是综合性的也是模块化的.基于其分层架构,它可以使开辟者机动地单独利用其任何一部份.Spring由很多模块构成,比方IoC容器,AOP,MVC,长期性,DAO和remoting.这些模块都是相当松耦合的:此中,一些模块的利用根本不需求另一些模块.从前,简直还没有象Spring利用程序这样的:你可以挑选利用一些,大大都,或全部的Spring框架支持的组件来构建你的利用程序.
Spring框架所供应的JDBC支持与别的Spring部份并非是紧耦合的,这极有利于代码的可保护性.本文将向你展示任何直接利用JDBC(也便是,不通过一些O/R映射框架本身利用JDBC)的利用程序是若何从Spring中受益的.
二.传统型JDBC
传统型JDBC有很多主动的方面使之在很多J2SE和J2EE利用程序开辟中占据重要地位.但是,也有一些特点使其难于利用:
开辟者需求处理大量复杂的任务和底子构造,比方大量的try-catch-finally-try-catch块.
利用程序需求复杂的错误处理以肯定衔接在利用后被精确关闭,这样以来使得代码变得冗长,膨胀,并且反复.
JDBC中利用了极不明确性的SQLException非常.
JDBC没有引入具体的非常子类层次机制.
呼应于任何一种错误,都只是抛出SQLException非常-无论它根源于JDBC驱动程序还是根源于数据库,这使得程序员很难理解毕竟是那边实际呈现了错误.比方,假如SQL对象是无效的或已经被锁定,那么将抛出一个SQLException非常.调试这样的非常需求一定的时间来查抄SQL状况值和错误代码.更有甚者,SQL状况值和错误代码的含义在各种数据库之间都有些差别.
事实证明,编写JDBC代码并非一项简单的工作-存在大量的反复性的工作.为了阐明问题,下面是一个例子-利用传统型JDBC来从数据库中得到一个可用任务的列表.
package com.spring.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
public class TraditionalJDBC {
public Vector getTasksNames() {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Vector task = new Vector();
try {
con = getConnection();
pstmt = con.prepareStatement( "select TASKNAME from tasks");
rs = pstmt.executeQuery();
while (rs.next()) {
task.add(rs.getString(1));
}
} catch (SQLException e) {
System.out.println(e);
} finally {
try {
rs.close();
pstmt.close();
con.close();
} catch (SQLException e1) {
System.out.println(e1);
}
}
return task;
}
private Connection getConnection()throws SQLException {
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl",
"scott","tiger");
} catch (SQLException sqle) {
System.out.println(sqle);
return null;
}
}
public static void main(String[] args) {
TraditionalJDBC obj = new TraditionalJDBC();
Vector task = obj.getTasksNames();
for (int i = 0; i < task.size(); i++) {
System.out.println(task.elementAt(i));
}
}
}
除了实际查询数据库的SQL代码外,上面的示例中需求宏大数目的例程代码.getConnection()办法与我们的任务无关,而即便是getTasksNames()办法也仅包含特定于当前任务的两行代码.剩下的都是一些普通的复杂的任务代码.
JDBC的很多主动方面使得它在很多J2SE和J2EE利用程序中仍旧占据重要地位.但是,正如你所见,有一些特点使其比我们大概想像的要更难于利用.JDBC这些乏味并且有时挫败人性的特点已经招致呈现了很多大众的可以操纵的JDBC抽象框架(比方SQLExecutor和Apache Jakarta Commons DBUtils),还有数不清的自家生产性JDBC利用程序框架.一种大众的可以操纵的JDBC抽象框架恰是Spring框架的JDBC抽象.
以上是“Spring JDBC抽象框架简化Web数据库开辟[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |