用户登录
用户注册

分享至

hibernate是什么

  • 作者: 嗫?暁雲?
  • 来源: 51数据库
  • 2020-09-22
JDBC的升级版,专用连接数据库。
此东东比JDBC简单使用,不需要输入很多的连接数据库代码。提取数据库数据也不用循环提取。使用时的方法为:

1.新建一个Java普通项目

2.创建user library 加入三个地方的jar包:两个hibernate 一个MYSQL驱动

3.创建hibernate配置文件,hibernate.cfg.xml

4.建立实体类user

5.在hibernate文件中寻找eg至底部找出user.hbm.xml映射文件,copy到映射文件所在文件中

6.将映射文件user.hbm.xml部分加入到hibernate.cfg.xml中

7.创建数据库,再利用hibernate将实体映射导入到数据库中

8.创建客户端
为方便调试
* 将log4j.properties copy到src中
* 再将配置文件hibernate.cfg.xml中加入
<property name="hibernate.show_sql">true</property>



  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使得Java程序员可以使用对象编程思维来操纵数据库。
也就是开发过程中的持久化层,主要是用来操纵数据库的,由逻辑层来调用,还有一个类似的框架叫ibaties。



  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。



  操作数据库的持久层



  Hibernate可以完成[对象]<=>[关系]的映射工作,也就是经常听到的Object/Relation Mapping(ORM),在没有ORM的时候,开发者需要自己开发对象到数据库的映射工作,一般来说在Java世界中是通过JDBC来实现,在.Net世界是通过ADO.net来实现,众所周知这一项任务是繁琐耗时的,因为要在代码中内置大量的SQL语句,这使得代码的可读性和可维护性大大降低。现在,Hibernate可以为我们来做这项工作,我们只需要配置一个Mapping文件即可,剩下的所有事情就交给Hibernate吧,这样可以节省对象持久化相关的至少30%的JDBC/ADO.net编程工作量,这是多么的令人兴奋阿。 1、什么是持久化层? 企业软件架构比较流行的三层结构是大家比较熟悉的,那就是自上而下为: [显示表述层]=>[业务逻辑层]=>[数据库层]这种结构中,业务逻辑层不仅负责业务逻辑,而且直接访问数据库,提供对业务数据的增、删、改、查的操作。为了把数据访问的细节和业务逻辑分开,可以把数据访问作为单独的持久化层。重新分层后自上而下变为: [显示表述层]=>[业务逻辑层]=>[持久化层]=>[数据库层]这样持久化层封装数据访问细节,为业务逻辑提供面向对象的API。一个完善的持久化层应该达到以下几个目标: (1)代码重用性高,能够完成所有的DB访问操作; (2)能够支持多种数据库平台; (3)具有独立性,持久化层的具体实现的变化不能影响上层的实现。正因为这几个目标的艰巨,在企业级开发中花费大量的时间,采用高级相关技术工程师去重头开发自己的持久层不是很可行的,Hibernate作为持久层中间件,它的具体实现对上层是透明的,开发者无需关系它的具体实现,只需要知道如何访问他的接口就行了。 2、什么是ORM? ORM(Object-Relation Mapping)是对象-关系映射,当下流行的开发语言都是面向对象的,如Java,C#。而当下流行的DB大多都是面向关系的,也就是关系数据库。这样在面向对象与面向关系之间需要一个桥梁,才能使二者协同无缝联合工作,ORM就是这个桥梁。映射关系如下: [类]<=>[表] [对象实例]<=>[表的行] [属性]<=>[表的列]那么这些映射关系是如何制定的呢?——只需要一个映射文件(XML)即可,在其中配置持久化类与DB表的映射关系后,ORM中间件在运行时参照此文件内容,对象持久化的DB中或把DB中数据加载到持久化类中。 Hibernate就是一个卓越的ORM中间件。 3、ORM是怎么映射的? 要把类的属性与DB表的Field对应,ORM就必须能识别类的属性名字和数值。这就必须才用反射(Reflection)技术,相信有一定开发经验的人对此技术都是耳熟能详了吧,当前主流开发语言都支持此技术,如Java和.net,而且具体用法都如出一辙。当然对于那些只想使用ORM而不关心ORM的具体实现的朋友,这些内容不了解也没有任何影响。这也恰恰是ORM的好处啊。 4、Hibernate采用的一个技术 当配置为自动决定何时把对象数据写入DB的模式下,Hibernate采用了一个自动识别对象属性变化的技术。即Hibernate知道持久化类哪些属性发生了变化,然后据此来决定后便的操作。关于此技术更具体的内容,以后再详述。 5、缓存 从内存中获取数据要比从DB中获取数据快得多,所以很多ORM都采用缓存结束来提高持久化效率,Hibernate也不例外。在Session中保留所有已经持久化的对象实例作为缓存,如果需要获取的数据在缓存中存在,则不去DB中加载。当然缓存中数据与DB中数据的一致性问题,Hibernate就是通过刚刚说过的[识别对象属性变化]的技术来实现的。 6、什么是HQL? HQL(Hibernate Query Language)是Hibernate自己的查询语句,它与SQL相似,但是HQL是面向对象的,它引用类名及类的属性名,而不是表名及表的字段名。



  ORM 工具,Object Relation Mapping

将数据库映射为对象操作的工具
软件
前端设计
程序设计
Java相关