对于小型应用程序,Hibernate和Spring集成是否必要



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

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

这种集成是否必要 - 集成而不是正常使用 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()

当你编写一个小应用程序时,Spring boot 是一个很好的解决方案,只需很少的配置,你就可以很好地搭建你的 Web 项目。而且我更喜欢使用春天的jdbc模板代替只是为了冬眠太重了

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

https://stackoverflow.com/questions/1607819/weaknesses-of-hibernate

最新更新