我是Hibernate
的初学者,在学习它的过程中,我发现它在后台使用JDBC
的概念。如果是这样,那么休眠的用途到底是什么?我知道它的优势,例如HQL
,annotations
,ORM
等。那么在幕后总是起作用的JDBC
呢? JDBC
和HIbernate
的分别职责是什么?
答案 0 :(得分:2)
ResultSet
的形式映射到对象)ResultSet
的形式读取查询结果请务必注意,不同的数据库(MySQL,Oracle,MSSQL,Postgres,H2,HSQLDB,Apache DB)具有不同的驱动程序实现,因此需要不同的JDBC驱动程序。如果不使用JDBC,Hibernate将需要自己实现这些驱动程序。
答案 1 :(得分:0)
它给我们带来了什么好处?
1。)Cache
机制:如果您的应用程序使用大量静态数据,那么缓存将是一个不错的选择,并且休眠支持透明地缓存。
2。)管理sessions
,transactions
等。
3。)减少编写查询的工作,使用更多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,但是在中大型项目中,使用某些不必要的Hibernate ORM解决方案总是很有帮助的。 同样对于大型项目,我们使用连接池从数据库获取连接。还有更多的连接池库,例如c3p0。