利用Spring框架改进J2EE编程

豆豆网   技术应用频道   2008年03月28日  【字号: 收藏本文

内容摘要:本文粗略地概括介绍了IoC,并详细介绍了Spring。Spring框架具有许多功能,其中许多功能在本文中只是点到为止。从基本的依赖注入到复杂的AOP操作,这些组成了Spring的强大功能,这是它的主要优点之一。能够根据问题需要使用或多或少的IoC功能是一个极具吸引力的理念。

  ◆创建一个数据库连接,可以的话从某个池创建。

  ◆构造一个查询字符串并提交。

  ◆迭代结果并将数据封送到域对象中。

  ◆处理不同阶段出现的大量异常。

  ◆确保记得编写finally代码块以关闭连接。

  但是各处的这种代码往往都会或多或少地有点“样板化”。一般来说这是有害的,不仅因为不需要的代码会增加,还因为有些东西可能会遗漏,如非常重要的关闭连接,如果没有实现它,可能导致数据资源池的泄漏。

  虽然我敢肯定我们都曾多次写过这类“样板”代码,但是将Spring方法和直接的JDBC实现对照来看,其结果将会有趣而又对比鲜明。“传统”的JDBC实现可能如下:

Connection con = null;
try
{
String url = "jdbc://blah.blah.blah;";
con = myDataSource().getConnection();
Statement stmt = con.createStatement();
String query = "SELECT TYPE FROM SENSORS";
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
String s = rs.getString("TYPE);
logger.debug(s + "  " + n);
}
} catch(SQLException ex)
{
logger.error("SQL ERROR!",ex);
}
finally
{
con.close();
}

  对于该方法要做一些说明。首先,它是有效的!该代码绝对不会出现任何错误。它会连接到数据库,并从“SENSOR”表获取所需的数据。该方法的基本问题源于缺乏抽象化。在大型应用程序中,必须反复剪切和粘贴这段代码,或者至少会出现类似的其他情况。较大的问题在于它依赖于编程人员去做“该做的事”。我们都知道,不管数据库操作的结果是什么,都必须用finally语句来关闭该数据库。有时我们忘记做该做的事。我和所有人一样感到内疚!

来源:BEA    作者:Peter Braswell    责编:豆豆技术应用

正在加载评论...