何为Hibernate?
Hibernate
:一个开源的对象关系映射框架
,对JDBC
进行了非常轻量级的对象封装,将POJO
与数据库表建立映射关系,以实现直接存取java
对象。
注:POJO(Plain Ordinary Java Object)
:简单的Java对象,就是普通JavaBeans
,是为了避免和EJB
混淆所创造的简称。
hibernate
是一个全自动的orm框架,可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 可以应用在任何使用JDBC的场合,既:可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用
中使用- 最具革命意义的是,
Hibernate
可以在应用EJB
的JaveEE架构中取代CMP
,完成数据持久化的重任。
注:ORM(Object Relational Mapping)
框架采用元数据来描述对象与关系映射的细节,元数据一般采用XML
格式,并且存放在专门的对象映射文件中。
为什么要使用Hibernate?
Hibernate
是关于java对象与数据库之间的联系,也就是MVC
中的数据持久层,也就是DAO
层。
- 正常步骤:
①在DAO
层操作xml
,数据封装在xml
上,读写xml
文件来实现CRUD
。
②DAO
层使用原生JDBC
连接数据库
③JDBC
代码冗余,使用封装后的JDBC
—》DBUtils
来简化CRUD。 DBUtils
的规律:
①插入数据时,将javaBean
对象拆分,拼装成SQL
语句。
②数据查询时,用SQL
语句把数据库中的列组合,拼装成javaBean
对象。- 使用
Hibernate
:
①根据javaBean
对象和数据表中的列之间的映射关系,自动生成SQL
语句。
Hibernate的优缺点
- 优点:
①Hibernate
直接提供相关支持,底层驱动可以随意切换数据库,快速简洁。
②使业务层与具体数据库分开,只针对Hibernate 进行开发,完成数据和对象的持久化。并且可以针对不同的数据库形成不同的SQL 查询语句,降低数据库之间迁移的成本。
③Hibernate
支持多种缓存机制,可以适配多种数据库。
④非侵入式:Hibernate
不要求持久化类实现任何接口或继承任何类,POJO
即可。 - 缺点:
①无法对SQL
进行优化。虽然有HQL
但性能还是很差。
②框架中遵循ORM
原则,大型项目表多的话,会导致配置文件过于复杂,性能和维护问题就令人头疼。
③执行效率不高,比原生的JDBC
差,尤其是在批量处理数据的时候。这也是ORM
框架的弱点。
④不支持批量修改,删除。