Spring JdbcTemplate和Hibernate之间的区别

3

我有一个简单的问题:Spring jdbcTemplate和Hibernate之间的主要区别是什么?我们在选择使用哪个时应该考虑哪些主要因素?

谢谢。


Spring JDBC Template不是JPA/ORM实现,Hibernate是。也许将Spring ORM与Hibernate进行比较更为合适。 - CoolBeans
2个回答

16

Hibernate是一个涵盖数据持久化和ORM(对象关系映射)JPA实现的庞大解决方案。此外,Hibernate定义了许多管理实体、持久化、事务等方面的方法。在Hibernate中,您可以使用SQL、HQL或Java注释。JDBC模板只是一个简单的工具,可帮助您管理SQL查询和事务。它可能更好地描述为JDBC包装器或助手。如果您喜欢自己管理数据库查询(SQL),或者如果您是初学者,则使用Spring JdbcTemplate将有助于您了解其工作原理。即使您正在开发更大的应用程序,也请考虑使用Hibernate。但要注意Hibernate的学习曲线。


谢谢您的回复。那么我可以在不使用任何其他 Spring 模块的项目中使用Spring JdbcTemplate吗? - kpedia
是的。只是要小心交易。我不确定事务管理器是否可以在没有代理/bean的情况下正常工作。 - Martin Strejc
1
当我每天处理数百万条记录时,我更喜欢使用像spring-jdbc这样简单而干净的工具,它可以为我控制连接和事务,并赋予我执行最佳查询的所有本地SQL功能。 - deFreitas
顺便说一下,你也可以在Hibernate中使用本地SQL查询,但这样会失去DB引擎的独立性。 - Martin Strejc

11

这完全取决于具体情况。如果你需要大量将领域对象映射到数据库表中,那么Hibernate是你应该考虑的解决方案。如果你正在编写一个进行许多复杂连接/PL-SQL的报告工具,请考虑Spring JDBC模板。


除了避免样板代码和自动关闭连接的原因外,选择JDBCtemplate而不是纯JDBC还有其他原因吗? - Stunner
我的情况是我有大约100个查询..无论是纯JDBC还是JdbcTemplate,我必须传递查询或硬编码或将其作为常量放在接口中...但代码看起来很混乱..所以我想最好使用纯JDBC以便我有更多的控制。 - Stunner
你可以在普通的JDBC中做任何事情,但在JdbcTemplate中都可以更加容易地实现。如果可能的话,我强烈建议使用JdbcTemplate或NamedParameterJdbcTemplate。如果您还没有完全接受它,我建议再对JdbcTemplate进行一些阅读学习。 - aglassman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接