【发布时间】:2019-08-04 15:11:59
【问题描述】:
我试图更好地了解我们如何使用 Hibernate 的优缺点。我有一个 HibernateUtil.java 的经验,我在其中调用以建立/获取用于数据访问交互的会话。但是,我维护了利用 @Autowired 属性在 DAO 中实现 SessionFactory 的应用程序。如果不明显,我们使用的是 Spring MVC。
下面是一些如何使用它们的简要示例:
方法A
public class MyDao {
public static void save() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
// ...
}
}
方法B
public class MyDaoImpl implements MyDao {
private SessionFactory sessionFactory;
//... getter/setter for session factory
public void save() {
Session session = getSessionFactory().getCurrentSession();
session.beginTransaction();
// ...
}
}
我很好奇为什么会使用一种方法而不是另一种方法。两者之间是否存在性能或内存消耗差异?您是否遇到过注入 bean 妨碍有效完成任务的情况?服务类是否应该实例化 DAO 的实例以访问它的方法,还是您更喜欢使用静态方法?
每个选项与其他选项相比有哪些其他优点和/或缺点?
结束此问题的原因
阅读更多关于此的内容后,我意识到这是一个基于意见的问题,我不会得到定量的答案。这归结为单例与依赖注入。这已被广泛讨论,我已经阅读了关于何时使用和不使用每个的主要论点。我认为应该讨论 Hibernate 是否应该配置为 Singleton 或 DI,但 Stack Overflow 不是讨论的地方。问候。
【问题讨论】:
-
研究为什么单例不好,依赖注入好。
标签: java hibernate autowired sessionfactory