gpt4 book ai didi

java - 在 dao 中集成 hibernate 和 spring 而没有 spring 依赖

转载 作者:行者123 更新时间:2023-11-29 03:43:04 25 4
gpt4 key购买 nike

当我们将 hibernate 与 spring 集成时,我们通常通过 @Repository spring 注释实现基于注释的方法。我了解到这样做的目的是,为了消除我们 dao 中的 spring 依赖性,并且由于 hibernate3 支持上下文 session 来管理 session

@Repository
public class HibernateSpitterDao implements SpitterDao{

privateSessionFactorysessionFactory;

@Autowired
public HibernateSpitterDao(SessionFactory sessionFactory){
this.sessionFactory=sessionFactory;
}

private SessioncurrentSession(){
return sessionFactory.getCurrentSession();
}
...
}

例如,如果我们不使用基于注释的方法,我们的 dao 将直接依赖于 spring 特定类,例如需要扩展 HibernateDaoSupport。

但即使有注释,DAO 仍然依赖于 Spring 知道吗?因为 @Repository 是 spring 注解。我们不能完全独立于 spring 知道吗?它更像是依赖于 spring 注释比依赖于 spring 类更好,是吗?

我只是在想好吧,一段时间后我们需要用其他东西来切换 spring。在那种情况下,如果我们的 DAO 对 spring 的依赖为零,我们根本不需要接触我们的 DAO。

最佳答案

要实现完全解耦,您将不得不摆脱注释,正如您已经发现的那样。或者,您必须使用基于 XML 的 spring 配置,或者创建一个 @Configuration构建 bean 工厂的类(也称为基于 java 的配置)。

我只是想对你的想法发表评论。花时间在一个完全解耦的解决方案上,原因是“也许在未来的某个时候我们会想要切换”对我来说听起来浪费了很多时间。您是否有任何理由怀疑或假设这种转变会在可预见的 future 或永远发生?很明显,您的解耦是有代价的。您将不得不维护 XML 文件和/或配置类,而不是易于查看的注释,这两者往往会变得相当复杂并且在一段时间后难以概览。

关于java - 在 dao 中集成 hibernate 和 spring 而没有 spring 依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12243459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com