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 工具提供数据访问模板。 |
它还提供了一种基于模板的方法。 |
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
结论
在本文中,我们学习了 Spring DAO、Spring ORM 和 Spring JDBC 之间的区别。这些是在 Spring 框架中访问数据的方法。Spring DAO 和 Spring ORM 都可以与多种技术集成,例如 Hibernate、Java 持久性 API (JPA) 和 Java 数据对象 (JDO)。但是,Spring JDBC 使用纯 JDBC。