面试官:谈谈你对hibernate的理解
回答:Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。
一、Hibernate是对JDBC进一步封装 原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了Hibernate把JDBC封装了一下,我们不用操作数据,直接操作它就行了。
二、我们再从分层的角度来看 我们知道非常典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。
三、Hibernate是开源的一个ORM(对象关系映射)框架。 ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。
hibernate的工作原理?
使用Hibernate的基本流程是:
配置Configuration对象、
产生SessionFactory、
创建session对象,
启动事务
完成CRUD操作,
提交事务
关闭session。
hibernate的优缺点,和jdbc的区别
①. 优点:
>对 JDBC 访问数据库的代码做了封装,简化了数据访问层繁琐的重复性代码
>映射的灵活性, 它支持各种关系数据库, 从一对一到多对多的各种复杂关系.
>非侵入性、移植性会好
>缓存机制: 提供一级缓存和二级缓存
②. 缺点:
>无法对 SQL 进行优化
>框架中使用 ORM原则, 导致配置过于复杂
>执行效率和原生的JDBC 相比偏差: 特别是在批量数据处理的时候
>不支持批量修改、删除
jdbc的缺点
1、代码太繁琐了
2、不是面向对象的数据库操作
3、资源关闭的代码也很繁琐,每次都得打开、关闭
4、没有做到数据缓存
5、移植性比较差
优点: 因为是最低层的操作,所以效率比较高