小型应用程序是否需要 Hibernate 和 Spring 集成?

Is Hibernate and Spring integration necessary for a small application?

我正在为自己创建一个小型应用程序,它已经使用 Spring 进行依赖项注入,现在我希望使用 Hibernate 进行数据库开发 - 简单的 CRUD 操作。

我已阅读有关 Hibernate 的教程,我了解如何将其用于我的简单用例,但我已经看到 Spring 和 Hibernate 可以集成。

这种集成是否必要 - 集成而不是像往常一样仅使用 Hibernate 有什么好处?

当你写一个小应用程序时,springboot是一个很好的解决方案,只需很少的配置,你就可以很好地搭建你的web项目。而且我更喜欢使用 spring 的 jdbcTemplate 而不是因为 hibernate 太重了

好处是巨大的:使用 Spring 提供的声明式事务管理,您可以避免在不集成它们的情况下所需的所有繁琐且容易出错的事务和错误管理代码。

在没有声明式事务处理的情况下使用 Hibernate 的典型方法如下所示:

public void doSomeWork() {
    Session sess = factory.openSession();
    try {
        //set transaction timeout to 3 seconds
        sess.getTransaction().setTimeout(3);
        sess.getTransaction().begin();

        // do some work

        sess.getTransaction().commit()
    }
    catch (RuntimeException e) {
        sess.getTransaction().rollback();
        throw e; // or display error message
    }
    finally {
        sess.close();
    }
}

使用 Spring 声明处理的相同方法如下所示:

@Transactional
public void doSomeWork() {
    Session sess = factory.getCurrentSession();
    // do some work
}

另一个优点是 Spring 可以使用类路径扫描自动找到所有映射的实体,从而避免使用休眠或 JPA 配置文件。

LocalSessionFactoryBean.setPackagesToScan()

如果你开发的是一个CRUD操作很少的小项目,除非你对Hibernate有足够的经验,否则Hibernate是可以避免的。主要问题之一是学习曲线,即理解 ORM/Sessions 等。请参阅以下 link,这很好地解释了这一点: