温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么简述Spring JDBC

发布时间:2021-10-27 09:27:11 来源:亿速云 阅读:108 作者:柒染 栏目:编程语言

本篇文章给大家分享的是有关怎么简述Spring JDBC,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

这里记录我对Spring JDBC框架的学习。由于Spring JDBC和我之前做的工作有很多共同之处,学习经典Framework的设计,取长补短,为我所用。在这里,先佩服一下Rod JohnSon,他对数据库,JDBC的理解非常深。看Spring jdbc框架的设计和源代码,带给了我很多以前没有想到的东西。我们知道,Spring JDBC的主要目标是为了简化JDBC的编程,方便我们构建健壮的应用程序。这里,它的一个基本设计理念,就是将JDBC编程中变化的和不变化的分开。在JDBC中,什么是变化的?毫无疑问,SQL语句是变化的。那什么是不变化的?正确的使用JDBC的方式是不变化的。

先看一段代码。(自己的代码就不拿来做示范了,先看Rod书吧)

  1. public List getAvailableSeatlds(DataSource ds, int performanceld,    

  2.         int seatType) throws ApplicationException {         

  3.      String sql = "SELECT seat_id AS id FROM available_seats " +    

  4.                    "WHERE performance_id = ? AND price_band_id = ?";List seatlds = new LinkedList();    

  5.     Connection con = null;    

  6.       PreparedStatement ps = null;    

  7.       ResultSet rs = null;    

  8.      try {    

  9.         con = ds.getConnection();   //1。建立Connection  

  10.        ps = con.prepareStatement(sql);  //2。创建preparedStatement  

  11.         ps.setlnt(1, performanceld);  //3。设置ps的参数  

  12.        ps.setlnt(2, seatType);  

  13.        rs = ps.executeQuery();      //4.执行查询

  14.        while (rs.next()) {         //5.解析ResultSet

  15.         int seatld = rs.getlnt(1);    

  16.           seatlds.add(new Integer(seatld));    

  17.        }                                                                                                                        

  18.        rs.close();                //6.关闭资源,做好善后工作。rs,ps,connection  

  19.        ps.close(); 

  20.          }    

  21.       catch (SQLException ex) {    

  22.        throw new ApplicationException ("Couldn't run query [" + sql + "]", ex);    

  23.      }    

  24.      finally {    

  25.         try {    

  26.          if (con != null)    

  27.           con.close();  //如果没有连接池的话,不要轻易关。connection属于耗费资源:)  

  28.        }    

  29.        catch (SQLException ex) {    

  30.          // Log and ignore    

  31.        }    

  32.      }    

  33.      return seatlds;    

  34.     }    

从上面看,什么是不变的。首先,咱们这个使用JDBC的方式是良好的,正确的,也是不变的,也就是workflow不变。其次,这里头的很多操作是不变的,比如说:关闭资源,处理异常。
◆什么是变的?设置PreparedStament的参数是变化的,利用PreparedStatement做什么是变化的。
◆还有什么是变的?取得Connection可能是变化的,我们可以从ConnectionPool中取,也可以裸从Database取。
◆还有什么是变的?在主工作流之外,还可以对PreparedStament设置一些属性。比如fetchSize等。
◆还有什么是变的?解析ResultSet是变的。但是可以抽象,都是从结果集中取得你想要的东西。

很好。经过分析,我们会自然而然的想到Template设计模式。用模板方法来描述我们的工作流。对于固定的操作,我们会把它建模为一些帮助类,利用这些类来完成固定操作,这些操作在Template方法中被调用。

对于哪些可以变的方法。我们也发现,其实它要实现的功能是一样的。抽象起来,我们可以用一些接口来描述这些功能。比如说数据库连接管理的功能。

设计取决于我们考虑问题的深度,以及我们对过程划分的粒度。

以上就是怎么简述Spring JDBC,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI