Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于异常转换的Spring free Hibernate DAO和@Repository!Isn';这不是依赖吗?_Java_Spring_Hibernate_Dependencies_Dao - Fatal编程技术网

Java 用于异常转换的Spring free Hibernate DAO和@Repository!Isn';这不是依赖吗?

Java 用于异常转换的Spring free Hibernate DAO和@Repository!Isn';这不是依赖吗?,java,spring,hibernate,dependencies,dao,Java,Spring,Hibernate,Dependencies,Dao,我已经读到创建Hibernate DAO的新方法是使用Hibernate上下文会话。主要原因是避免使用基于Spring的HibernateTemplate/HiberateDaoSupport,从而避免使用Spring自由DAO 当我搜索如何处理异常翻译时?到处都写着我应该使用@Repository@Repository确实需要导入并在我的代码中创建依赖项。我说得对吗 注释不被认为是依赖项吗?如果是的话,我是否可以使用XML实现这一点?或者我应该使用旧的HibernateDaoSupport方式

我已经读到创建Hibernate DAO的新方法是使用Hibernate上下文会话。主要原因是避免使用基于Spring的
HibernateTemplate/HiberateDaoSupport
,从而避免使用Spring自由DAO

当我搜索如何处理异常翻译时?到处都写着我应该使用
@Repository
<代码>@Repository确实需要导入并在我的代码中创建依赖项。我说得对吗

注释不被认为是依赖项吗?如果是的话,我是否可以使用XML实现这一点?或者我应该使用旧的
HibernateDaoSupport
方式,因为我的代码将与Spring耦合

更新 发现了一个类似的问题:“但是:

  • @pap给出的答案的第一段没有为@Repository指定任何明确的XML替代方案
  • 该答案其余部分提供的见解是合理的,但我的问题仍然没有得到回答如果解耦不是一个大问题,为什么Spring会尝试提出Hibernate DAO的新方法

另外,这不是批评。这是一种尝试,目的是学习如何正确思考这个主题(即依赖关系)。

Spring异常转换的首要目的是通过创建对Spring的依赖来打破对Hibernate的依赖。不管注释如何,Spring异常转换都会捕获Hibernate异常并将其转换为Spring异常。通过将catch语句放在与Spring异常相关的代码中,您将代码与Spring的耦合比添加任何@Repository注释更直接。如果您不想依赖Spring,那么只需直接使用Hibernate异常即可。基本上有两种方法:

  • 对异常和上下文会话使用Hibernate(不耦合到Spring)。在这种情况下,根本不使用Spring异常转换
  • 使用Spring进行异常和会话处理(与Hibernate的耦合越松,与Spring的耦合就越多)

  • Spring异常转换的要点首先是通过创建对Spring的依赖来打破对Hibernate的依赖。不管注释如何,Spring异常转换都会捕获Hibernate异常并将其转换为Spring异常。通过将catch语句放在与Spring异常相关的代码中,您将代码与Spring的耦合比添加任何@Repository注释更直接。如果您不想依赖Spring,那么只需直接使用Hibernate异常即可。基本上有两种方法:

  • 对异常和上下文会话使用Hibernate(不耦合到Spring)。在这种情况下,根本不使用Spring异常转换
  • 使用Spring进行异常和会话处理(与Hibernate的耦合越松,与Spring的耦合就越多)

  • 为什么要避免Spring?通常给出的理由是为了避免DAO和Spring之间不必要的耦合。如果这种依赖是可以避免的,我说,为什么不呢?!问题是如果/当我必须使用@repository annotation时,依赖关系实际上就存在了。@Hossuen:你说得对,该注释强制依赖关系(据我所知)。但是,如果没有充分的理由,不应避免DAO和弹簧之间的耦合。您的“为什么不”原因很容易用“spring提供了许多实用程序和良好实践,使代码更健壮、更干净、更安全、更易于维护”来回答。我认为这是一个误解。我不是说要避免使用Spring本身,而是要避免对它的依赖。这就是Spring推荐新方法的原因。但是异常转换仍然需要@Repository,这就引出了上面的问题。另外,我想说Hibernate上下文会话是一种新方法,而不是新方法。为什么要避免Spring?通常给出的理由是避免DAO和Spring之间不必要的耦合。如果这种依赖是可以避免的,我说,为什么不呢?!问题是如果/当我必须使用@repository annotation时,依赖关系实际上就存在了。@Hossuen:你说得对,该注释强制依赖关系(据我所知)。但是,如果没有充分的理由,不应避免DAO和弹簧之间的耦合。您的“为什么不”原因很容易用“spring提供了许多实用程序和良好实践,使代码更健壮、更干净、更安全、更易于维护”来回答。我认为这是一个误解。我不是说要避免使用Spring本身,而是要避免对它的依赖。这就是Spring推荐新方法的原因。但是异常转换仍然需要@Repository,这就引出了上面的问题。另外,我想说Hibernate上下文会话是一种新方法,而不是新方法。