【发布时间】:2019-04-08 03:25:44
【问题描述】:
我是 Hibernate 的初学者,在学习它时,我发现了它在幕后使用 JDBC 的概念。如果是这样,那么 Hibernate 到底有什么用?我知道它的优点,如 HQL、注释、ORM 功能等。那么在幕后工作的总是 JDBC 吗? JDBC 和 Hibernate 各自的职责是什么?
【问题讨论】:
我是 Hibernate 的初学者,在学习它时,我发现了它在幕后使用 JDBC 的概念。如果是这样,那么 Hibernate 到底有什么用?我知道它的优点,如 HQL、注释、ORM 功能等。那么在幕后工作的总是 JDBC 吗? JDBC 和 Hibernate 各自的职责是什么?
【问题讨论】:
ResultSets 的形式)映射到对象ResultSets请务必注意,不同的数据库(MySQL、Oracle、MSSQL、Postgres、H2、HSQLDB、Apache DB)具有不同的驱动程序实现,因此需要不同的 JDBC 驱动程序。如果不使用 JDBC,Hibernate 需要自己实现这些驱动程序。
【讨论】:
它为我们提供了哪些我们应该寻找的优势。
1.) 缓存机制:如果您的应用程序使用大量静态数据,那么缓存将是一个不错的选择,并且 hibernate 透明地支持缓存。
2.) 管理会话、事务等
3.) 减少编写查询的工作,更多的 Hibernate 实用程序,如 Query API、Criteria API、HQL
4.) 开发人员的生产力:查询性能本身通常比手动编码的查询更差,因为它无法针对每个特定情况进行优化。 Hibernate 通过使用缓存很好地弥补了这一点。
5.) 数据库更改:如果您更改数据库,例如将 MySQL 更改为 Oracle,并且如果您使用 Hibernate,则无需更改任何实现代码。但是,如果您使用原始 JDBC 和原始查询而不是 JPA 或 HQL,那么您必须更改更多查询。因为原始查询可能会根据数据库供应商的实施而改变。
Hibernate 是一个非常庞大的解决方案,具有数据持久性和 ORM,包括 JPA 实现。此外,在 Hibernate 中定义了许多方法来管理实体、如何持久化、事务等。在 Hibernate 中,您可以使用 SQL、HQL 或 java 注释。 JDBC 模板只是一个简单的工具,可以帮助您管理 SQL 查询和事务。最好将其描述为 JDBC 包装器或帮助器。如果您更喜欢自己管理数据库查询 (SQL),或者您是初学者,那么使用 Spring JdbcTemplate 将帮助您了解它的工作原理。即使您正在开发更大的应用程序,也请考虑使用 Hibernate。请注意 Hibernate 的学习曲线。
总的来说,如果您在一个相对较小的项目中工作,您也可以使用 JDBC,但是在中大型项目中,使用一些 ORM 解决方案总是有帮助的,不一定是 Hibernate。 同样对于大型项目,我们使用连接池从数据库获取连接。还有更多像 c3p0 这样的连接池库。
【讨论】: