在jdbc连接中使用哪种设计模式?

时间:2015-12-16 04:17:17

标签: design-patterns database-connection

Connection conn = DriverManager.getConnection(URL); 语句stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql);

这里使用的是哪种设计模式?我们看到每个对象都返回一个不同的对象。

选择的设计模式有哪些替代方案?

2 个答案:

答案 0 :(得分:11)

显然不是每个代码都遵循设计模式。但仍有一些东西类似于一些熟悉的模式。

整个JDBC架构实际上是一个Bridge,它是一个抽象的概念,它包含可以单独替换的其他抽象。

下面的类实现了一些模式。

对我来说,DriverManager.getConnection(URL)看起来像static factory method,这在Java框架中很常见。

Statement和Connection实际上遵循相同的模式,它是某种Unit of Work or Transaction pattern,因为它允许您将语句组合在一起。但是当它实现JDBC Wrapper接口时,它也遵循Proxy模式。

ResultSet遵循Iterator模式,但它也是Data mapper

答案 1 :(得分:1)

对选中的答案进行纠正

ResultSet不是data mapper ,通过它的链接,我们可以很容易地发现 data mapper 概念是在上下文中创造的企业应用程序体系结构 在2003年ResultSet在1990年代后期已经存在。人们可以搜索关键字“ since”,由此可以推断出添加新功能时最早的版本是从1.2起(在1998年。请参阅Java version history),这意味着诸如 getters 之类的大多数旧功能在1998年之前就已经属于此类

JDK 1.1.8的类列表为here,其中已经有ResultSet

此外,从DriverManagerConnectionDriver来看, JDBC 不仅是静态工厂方法的应用>,但更准确地说, 服务提供者框架的标准应用,一种在项目1中引入的设计模式,在其中考虑了静态工厂方法而不是构造函数本书Effective Java

  • Connection服务接口
  • DriverManager.registerDriver提供商注册 API
  • DriverManager.getConnection服务访问API
  • java.sql.Driver服务提供商界面