JDBC和Hibernate区别

1、JDBC

我们平时使用jdbc进行编程,大致需要下面几个步骤:
1、使用jdbc编程需要连接数据库,注册驱动和数据库信息;
2、操作Connection,打开Statement对象;
3、通过Statement对象执行SQL,返回结果到ResultSet对象;
4、使用ResultSet读取数据,然后通过代码转化为具体的POJO对象;
5、关闭数据库相关的资源。

Jdbc的缺点:
1、工作量比较大,需要连接,然后处理jdbc底层事务,处理数据类型,还需要操作Connection,Statement对象和ResultSet对象去拿数据并关闭他们。
2、我们对jdbc编程可能产生的异常进行捕捉处理并正确关闭资源。

由于JDBC存在的缺陷,在实际工作中我们很少直接使用jdbc进行编程,用的更多的是ORM对象关系模型来操作数据库,Hibernate就是一个ORM模型。

2、Hibernate

   Hibernate是建立在若干POJO通过xml映射文件(或注解)提供的规则映射到数据库表上的。我们可以通过POJO直接操作数据库的数据,他提供的是一种全表映射的模型。相对而言,Hibernate对JDBC的封装程度还是比较高的,我们已经不需要写SQL,只要使用HQL语言就可以了。

Hibernate的优点:
1、消除了代码的映射规则,它全部分离到了xml或者注解里面去配置。
2、无需在管理数据库连接,它也配置到xml里面了。
3、一个会话中不需要操作多个对象,只需要操作Session对象。
4、关闭资源只需要关闭一个Session便可。

这就是Hibernate的优势,在配置了映射文件和数据库连接文件后,Hibernate就可以通过Session操作,非常容易,消除了jdbc带来的大量代码,大大提高了编程的简易性和可读性。Hibernate还提供了级联,缓存,映射,一对多等功能。Hibernate是全表映射,通过HQL去操作pojo进而操作数据库的数据。

Hibernate的缺点:
1,全表映射带来的不便,比如更新时需要发送所有的字段。
2,无法根据不同的条件组装不同的SQL。
3,对多表关联和复杂的sql查询支持较差,需要自己写sql,返回后,需要自己将数据封装为pojo。
4,不能有效的支持存储过程。
5,虽然有HQL,但是性能较差,大型互联网系统往往需要优化sql,而hibernate做不到。

你可能感兴趣的:(杂)