【发布时间】:2015-04-24 20:22:48
【问题描述】:
如果我不使用 @Repository 注释 DAO 类,那仍然会使未经检查的异常(从 DAO 方法抛出)有资格转换为 Spring DataAccessException 吗?谁能解释一下?与@Repository 注释有点混淆
【问题讨论】:
标签: spring hibernate spring-mvc dao spring-aop
如果我不使用 @Repository 注释 DAO 类,那仍然会使未经检查的异常(从 DAO 方法抛出)有资格转换为 Spring DataAccessException 吗?谁能解释一下?与@Repository 注释有点混淆
【问题讨论】:
标签: spring hibernate spring-mvc dao spring-aop
@Repository 的定义在此 link 上给出
表明一个带注释的类是一个“Repository”,最初 由领域驱动设计 (Evans, 2003) 定义为“一种机制 封装存储、检索和搜索行为,模拟一个 对象集合”。
实现传统 J2EE 模式(例如“数据访问”)的团队 Object" 也可以将此构造型应用于 DAO 类,但要小心 应该理解数据访问之间的区别 这样做之前的对象和 DDD 样式的存储库。这个注解是 通用的刻板印象和个别团队可能会缩小他们的 语义并酌情使用。
这样注释的类有资格使用 Spring DataAccessException 与 a 结合使用时的翻译 PersistenceExceptionTranslationPostProcessor。带注释的类是 还阐明了其在整个应用程序架构中的作用 用于工具、方面等的目的。
如果我不使用 @Repository 注释 DAO 类会怎样? 使未经检查的异常(从 DAO 方法抛出)有资格转换为 Spring DataAccessException??
不,因为根据此link 提供的详细信息
自动应用持久性异常的 Bean 后处理器 翻译为任何标有 Spring 的 @Repository 注释的 bean, 将相应的 PersistenceExceptionTranslationAdvisor 添加到 暴露的代理(现有的 AOP 代理或新生成的代理 实现了目标的所有接口)。
希望这能帮助你理解!!
【讨论】: