我是Hibernate的初学者,在学习它的时候,我偶然发现了它在幕后使用JDBC的概念。如果是这样的话,Hibernate到底有什么用呢?我知道它的优点,如HQL,注释,ORM特性等。那么在幕后总是JDBC做工作吗?JDBC和Hibernate有什么不同的职责?
发布于 2019-04-08 12:40:21
SQL statements
的SQL
将SQL语句以ResultSets格式发送到database
值得注意的是,不同的数据库(MySQL、Oracle、MSSQL、Postgres、H2、HSQLDB、Apache DB)具有不同的驱动程序实现,因此需要不同的JDBC驱动程序。如果不使用JDBC,Hibernate将需要自己实现这些驱动程序。
发布于 2019-04-08 12:50:02
它为我们提供了我们应该寻找的优势。
1.)缓存机制:如果您的应用程序使用大量静态数据,那么缓存将是一个很好的选择,并且hibernate支持透明缓存。
2.)管理会话、事务等。
3.)减少编写查询的工作量,增加Hibernate的实用程序,如查询API、标准API、HQL
4.)开发人员的生产力:查询本身的性能通常比手工编码的查询更差,因为它不能针对每种特定情况进行优化。Hibernate通过使用缓存很好地弥补了这一点。
5.)数据库更改:如果更改数据库,如将MySQL更改为Oracle,并且使用Hibernate,则无需更改任何实现代码。但是如果您使用原始JDBC和原始查询,而不是JPA或HQL,那么您必须更改更多的查询。因为原始查询可能会根据数据库供应商的实现而改变。
Hibernate是一个非常强大的数据持久化和ORM解决方案,包括JPA实现。此外,在Hibernate中定义了许多方法来管理实体、如何持久化、事务等。JDBC模板只是一个简单的工具,可以帮助您管理SQL查询和事务。将其描述为JDBC包装器或帮助器可能更合适。如果您喜欢自己管理数据库查询(SQL),或者如果您是初学者,使用Spring将帮助您理解它是如何工作的。即使您正在开发更大的应用程序,也可以考虑使用Hibernate。只需小心Hibernate的学习曲线即可。
总而言之,如果你在一个相对较小的项目中工作,你也可以使用JDBC,但在中型到大型项目中,使用一些不一定是Hibernate的ORM解决方案总是很有帮助的。此外,对于大型项目,我们使用连接池从数据库获取连接。像c3p0这样的连接池类库要多得多。
https://stackoverflow.com/questions/55565832
复制相似问题