对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
ORM 与 Spring 简介
Spring 框架支持与 Java Persistence API (JPA) 集成,并且 支持原生 Hibernate 进行资源管理、数据访问对象 (DAO) 实现, 和交易策略。例如,对于 Hibernate,有一流的支持 几个方便的 IoC 功能,解决了许多典型的 Hibernate 集成问题。 您可以为 OR(对象关系)映射配置所有受支持的功能 工具。他们可以参与 Spring 的资源和 事务管理,并且它们符合 Spring 的通用事务和 DAO 异常层次结构。推荐的集成风格是针对普通 Hibernate 或 JPA API。
当您创建时,Spring 会为您选择的 ORM 层添加显着的增强功能 数据访问应用程序。您可以利用尽可能多的集成支持 希望,您应该将这种集成工作与构建的成本和风险进行比较 内部类似的基础设施。您可以使用大部分 ORM 支持,就像使用 库,无论技术如何,因为一切都被设计成一套可复用的 JavaBeans 的 JavaBeans 中。Spring IoC 容器中的 ORM 便于配置和部署。因此 本节中的大多数示例都显示了 Spring 容器内的配置。
使用 Spring Framework 创建 ORM DAO 的好处包括:
-
更轻松的测试。Spring 的 IoC 方法使交换实现变得容易 和 Hibernate 的配置位置
SessionFactory
实例, JDBCDataSource
实例、事务管理器和映射对象实现(如果需要)。这 反过来,可以更轻松地测试 隔离。 -
常见数据访问异常。Spring 可以包装来自 ORM 工具的异常, 将它们从专有(可能检查的)异常转换为公共运行时
DataAccessException
等级制度。此功能可让您处理大多数持久性 异常,这些异常是不可恢复的,仅在适当的层中,而没有 烦人的样板捕获、抛出和异常声明。你仍然可以诱捕 并根据需要处理异常。请记住,JDBC 异常(包括 特定于数据库的方言)也会转换为相同的层次结构,这意味着您可以 在一致的编程模型中使用 JDBC 执行一些作。 -
一般资源管理。Spring 应用程序上下文可以处理位置 和 Hibernate 的配置
SessionFactory
实例,JPAEntityManagerFactory
实例, JDBCDataSource
实例和其他相关资源。这使得这些 价值观易于管理和更改。弹簧提供高效、简单和安全的处理 持久性资源。例如,使用 Hibernate 的相关代码通常需要 使用相同的休眠Session
以确保效率和适当的交易处理。 Spring 可以轻松创建和绑定Session
透明地到当前线程, 通过暴露电流Session
通过 HibernateSessionFactory
.因此,Spring 解决了典型 Hibernate 使用的许多长期问题,适用于任何本地或 JTA 交易环境。 -
集成交易管理。你可以用声明式 面向方面编程 (AOP) 样式的方法拦截器,通过
@Transactional
注释或通过在 XML 配置文件。在这两种情况下,事务语义和异常处理 (回滚等)为您处理。如资源和事务管理中所述, 您还可以交换各种事务管理器,而不会影响与 ORM 相关的代码。 例如,您可以在本地事务和 JTA 之间进行交换,并使用相同的完整服务 (例如声明性事务)在这两种情况下都可用。此外 与 JDBC 相关的代码可以与用于执行 ORM 的代码完全事务集成。 这对于不适合 ORM 的数据访问非常有用(例如批处理和 BLOB 流),但仍需要与 ORM作共享公共事务。
获得更全面的 ORM 支持,包括对替代数据库的支持 MongoDB 等技术,您可能想查看 Spring Data 项目套件。如果你是 JPA 用户,则 Getting Started Accessing 来自 spring.io 的 JPA 指南数据提供了很好的介绍。 |