千家信息网

怎么简述Spring JDBC

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇文章给大家分享的是有关怎么简述Spring JDBC,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。这里记录我对Spring JDBC
千家信息网最后更新 2025年01月23日怎么简述Spring JDBC

本篇文章给大家分享的是有关怎么简述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,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0