我为自己创建了一个小应用程序,它已经使用Spring进行依赖注入,现在我希望使用Hibernate进行数据库开发 - 简单的CRUD操作。
我已经阅读了有关Hibernate的教程,我了解如何将它用于我的简单用例,但我已经看到Spring和Hibernate可以集成。
这种集成是否必要 - 集成的好处是什么,而不仅仅是正常使用Hibernate?
答案 0 :(得分:4)
好处是巨大的:使用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可以使用类路径扫描自动查找所有映射实体,这样可以避免使用hibernate或JPA配置文件。
答案 1 :(得分:2)
当你编写一个小应用程序时,spring boot是一个很好的解决方案,配置很少,你可以很好地搭建你的web项目。而且我更喜欢使用spring的jdbcTemplate而不仅仅是因为hibernate太重了
答案 2 :(得分:0)
如果你开发一个CRUD操作很少的小项目,那么除非你对Hibernate有足够的经验,否则Hibernate可以避免。其中一个主要问题是学习曲线,即了解ORM /会话等。请参阅以下链接,该解释非常好:
https://stackoverflow.com/questions/1607819/weaknesses-of-hibernate