本篇文章给大家分享的是有关怎么简述Spring JDBC,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
这里记录我对Spring JDBC框架的学习。由于Spring JDBC和我之前做的工作有很多共同之处,学习经典Framework的设计,取长补短,为我所用。在这里,先佩服一下Rod JohnSon,他对数据库,JDBC的理解非常深。看Spring jdbc框架的设计和源代码,带给了我很多以前没有想到的东西。我们知道,Spring JDBC的主要目标是为了简化JDBC的编程,方便我们构建健壮的应用程序。这里,它的一个基本设计理念,就是将JDBC编程中变化的和不变化的分开。在JDBC中,什么是变化的?毫无疑问,SQL语句是变化的。那什么是不变化的?正确的使用JDBC的方式是不变化的。
先看一段代码。(自己的代码就不拿来做示范了,先看Rod书吧)
public List getAvailableSeatlds(DataSource ds, int performanceld,
int seatType) throws ApplicationException {
String sql = "SELECT seat_id AS id FROM available_seats " +
"WHERE performance_id = ? AND price_band_id = ?";List seatlds = new LinkedList();
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = ds.getConnection(); //1。建立Connection
ps = con.prepareStatement(sql); //2。创建preparedStatement
ps.setlnt(1, performanceld); //3。设置ps的参数
ps.setlnt(2, seatType);
rs = ps.executeQuery(); //4.执行查询
while (rs.next()) { //5.解析ResultSet
int seatld = rs.getlnt(1);
seatlds.add(new Integer(seatld));
}
rs.close(); //6.关闭资源,做好善后工作。rs,ps,connection
ps.close();
}
catch (SQLException ex) {
throw new ApplicationException ("Couldn't run query [" + sql + "]", ex);
}
finally {
try {
if (con != null)
con.close(); //如果没有连接池的话,不要轻易关。connection属于耗费资源:)
}
catch (SQLException ex) {
// Log and ignore
}
}
return seatlds;
}
从上面看,什么是不变的。首先,咱们这个使用JDBC的方式是良好的,正确的,也是不变的,也就是workflow不变。其次,这里头的很多操作是不变的,比如说:关闭资源,处理异常。
◆什么是变的?设置PreparedStament的参数是变化的,利用PreparedStatement做什么是变化的。
◆还有什么是变的?取得Connection可能是变化的,我们可以从ConnectionPool中取,也可以裸从Database取。
◆还有什么是变的?在主工作流之外,还可以对PreparedStament设置一些属性。比如fetchSize等。
◆还有什么是变的?解析ResultSet是变的。但是可以抽象,都是从结果集中取得你想要的东西。
很好。经过分析,我们会自然而然的想到Template设计模式。用模板方法来描述我们的工作流。对于固定的操作,我们会把它建模为一些帮助类,利用这些类来完成固定操作,这些操作在Template方法中被调用。
对于哪些可以变的方法。我们也发现,其实它要实现的功能是一样的。抽象起来,我们可以用一些接口来描述这些功能。比如说数据库连接管理的功能。
设计取决于我们考虑问题的深度,以及我们对过程划分的粒度。
以上就是怎么简述Spring JDBC,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。