Spring DAO、Spring ORM 和 Spring JDBC 之间的区别


上面提到的三个术语 Spring DAO、Spring ORM 和 Spring JDBC,都与 Spring 框架中的数据访问相关。该框架由 Rod Johnson 于 2003 年 6 月开发,并且随着其发布,由于其构建企业应用程序的全面工具和功能集,它在 Java 开发人员中变得非常流行。尽管这些术语服务于相同目的,但它们之间存在一些区别。在本文中,我们将讨论 Spring DAO、Spring ORM 和 Spring JDBC 之间的区别。

Spring DAO 与 Spring ORM 与 Spring JDBC

在本节中,我们将介绍 Spring DAO、Spring ORM 和 Spring JDBC,稍后我们将创建一个表格来描述这三种技术之间的区别。

Spring JDBC

它是一个模块,提供使用 JDBC API 与 Spring 交互的功能。JDBC 的全称是 Java 数据库连接。它是一个应用程序编程接口 (API),允许 Java 应用程序使用 SQL 语句与关系数据库进行交互。我们可以将 Spring JDBC 与其他 Spring 模块集成,例如事务管理、数据访问对象 (DAO) 和对象关系映射 (ORM)。

Spring JDBC 提供了一种基于模板的方法,减少了使用 JDBC API 所需的样板代码量,例如打开和关闭连接、语句和结果集、处理异常等。术语样板代码指的是具有固定模式的一堆代码块。有多种方法可以形成 JDBC 数据库访问,包括 JdbcTemplate、SimpleJdbcInsert、SimpleJdbcCall 和 RDBMS 对象方法。

Spring DAO

它是一个约定,代表 Spring 数据访问对象,并指导我们如何编写 DAO。与 Spring JDBC 一样,它不提供任何用于数据访问的模板或接口。它允许轻松地使用数据访问技术,例如 JDBC、Hibernate 和 JDO。我们必须使用 @Repository 注释 DAO,以将与 JDBC、Hibernate 和 JDO 相关的异常转换为 DataAccessException 子类。

为了使用这些底层技术,Spring 提供了以下抽象 DAO 类,我们可以在程序中扩展它们:

  • JdbcDaoSupport

  • HibernateDaoSupport

  • JdoDaoSupport

  • JpaDaoSupport

Spring ORM

为了进行资源管理和 DAO 实现,我们还可以将 Spring 框架与各种 ORM 工具集成,例如 Hibernate、TopLink、Java 持久性 API (JPA)、Java 数据对象 (JDO) 和 iBATIS SQL Maps。这里,ORM 代表对象关系映射。

以下是 Spring ORM 提供的功能列表:

  • Spring IoC 是一种实现对象依赖项之间松耦合的机制。它可以应用于 Hibernate 和 JDBC 的实例,以交换它们的实现和配置位置,这有助于更轻松地测试应用程序。

  • Spring 可以将来自其他 ORM 工具的异常转换为常见的运行时异常,即 DataAccessException。

  • 它提供高效、简单且安全的资源处理。

  • 它还提供集成的交易管理系统。

Spring DAO、Spring ORM 和 Spring JDBC 之间的区别

下表总结了从上述讨论中得出的 Spring DAO、Spring ORM 和 Spring JDBC 之间的区别:

Spring DAO

Spring ORM

Spring JDBC

它允许我们使用数据访问技术。

它允许在 Spring 中集成 ORM 工具。

它建立在 JDBC 之上。

它的实现和维护稍微复杂一些。

它的实现和维护也很复杂。

与其他技术相比,它的实现和维护相对简单。

Spring DAO 没有提供任何用于数据访问的模板。

它通过 ORM 工具提供数据访问模板。

它还提供了一种基于模板的方法。

结论

在本文中,我们学习了 Spring DAO、Spring ORM 和 Spring JDBC 之间的区别。这些是在 Spring 框架中访问数据的方法。Spring DAO 和 Spring ORM 都可以与多种技术集成,例如 Hibernate、Java 持久性 API (JPA) 和 Java 数据对象 (JDO)。但是,Spring JDBC 使用纯 JDBC。

更新于:2023 年 8 月 17 日

652 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.