如果HIbernate使用JDBC本身,该怎么做

时间:2019-04-08 03:25:45

标签: java hibernate

我是Hibernate的初学者,在学习它的过程中,我发现它在后台使用JDBC的概念。如果是这样,那么休眠的用途到底是什么?我知道它的优势,例如HQLannotationsORM等。那么在幕后总是起作用的JDBC呢? JDBCHIbernate的分别职责是什么?

2 个答案:

答案 0 :(得分:2)

  • Hibernate执行ORM层
    • 将对象映射到SQL语句
    • 将SQL查询结果(以ResultSet的形式映射到对象)
  • JDBC进行数据库连接
    • 将SQL语句发送到数据库
    • ResultSet的形式读取查询结果
  • 数据库
    • 执行SQL语句以更新数据
    • 执行SQL语句以查询数据
    • 管理数据和索引

请务必注意,不同的数据库(MySQL,Oracle,MSSQL,Postgres,H2,HSQLDB,Apache DB)具有不同的驱动程序实现,因此需要不同的JDBC驱动程序。如果不使用JDBC,Hibernate将需要自己实现这些驱动程序。

答案 1 :(得分:0)

它给我们带来了什么好处?

1。)Cache机制:如果您的应用程序使用大量静态数据,那么缓存将是一个不错的选择,并且休眠支持透明地缓存。

2。)管理sessionstransactions等。

3。)减少编写查询的工作,使用更多Query APICriteria APIHQL之类的休眠工具

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。