hibernate基础知识(入门)

在开始学hibernate之前,一直就有人说:Hibernate并不难,无非是对JDBC进一步封装。一句不难,难道是真的不难还是眼高手低?
如果只是停留在使用的层面上,我相信什么技术都不难,看看别人怎么做的,你也可以很快上手。
这难道是学习的最终目的吗?
不是,绝对不是。我们需要了解这门技术的基本概念,它到底是什么,它是干什么的,它有什么优缺点。下面我就带领大家一起回顾一下Hibernate:

什么是Hibernate?

  Hibernate,翻译过来是冬眠的意思,正好现在已经进入秋季,世间万物开始准备冬眠了。其实对于对象来说就是持久化。

扫盲——————————————————————————————————–
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

持久化是将程序数据在持久状态和瞬时状态间转换的机制。

JDBC就是一种持久化机制。文件IO也是一种持久化机制。

日常持久化的方法:
1、将鲜肉冷藏,吃的时候再解冻的方法也是。
2、将水果做成罐头的方法也是。
结束———————————————————————————————————-

我们从三个角度理解一下Hibernate:

一、Hibernate是对JDBC进一步封装
原来没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理,所以出现了Hibernate把JDBC封装了一下,我们不用操作数据,直接操作它就行了。

二、我们再从分层的角度来看
我们知道非常典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。

三、Hibernate是开源的一个ORM(对象关系映射)框架。
ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。

Hibernate的核心:

这里写图片描述

 从上图中,我们可以看出Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。Hibernate的所有内容都在这了。那我们从上到下简单的认识一下,每个接口进行一句话总结。

1、Configuration接口:负责配置并启动Hibernate
2、SessionFactory接口:负责初始化Hibernate
3、Session接口:负责持久化对象的CRUD操作
4、Transaction接口:负责事务
5、Query接口和Criteria接口:负责执行各种数据库查询

注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。

Hibernate的优/缺点:

优点:
1、更加对象化
以对象化的思维操作数据库,我们只需要操作对象就可以了,开发更加对象化。
2、移植性
因为Hibernate做了持久层的封装,你就不知道数据库,你写的所有的代码都具有可复用性。
3、Hibernate是一个没有侵入性的框架,没有侵入性的框架我们称为轻量级框架。
对比Struts的Action和ActionForm,都需要继承,离不开Struts。Hibernate不需要继承任何类,不需要实现任何接口。这样的对象叫POJO对象。
4、Hibernate代码测试方便。
5、提高效率,提高生产力。

缺点:
1、使用数据库特性的语句,将很难调优
2、对大批量数据更新存在问题
3、系统中存在大量的攻击查询功能

总结:

  Hibernate可以使我们采用对象化的思维操作关系型数据库。这篇博文最主要的目的是从整体上认识Hibernate,内容可能会有点空,不是特别详细,但是后面会有更加针对性的博文进行讲解。敬请期待。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本下载包说明<br/>-------------<br/><br/>本下载包是《深入浅出Hibernate》(http://www.redsaga.com/hibernate_book.html)一书的配套教程程序,目前版本为1.0.<br/><br/>本下载包与书籍的实战篇紧密结合.<br/><br/>下载包中的程序是一个简明的示例论坛程序,按照循序渐进的原则,分为不同的步骤:<br/><br/>步骤1: <br/>建立最简单的项目基础结构:Board/User/Article三个类,包含最基本的配置文件。同时,在这一步中,建立测试类,刻画项目各个类之间的契约关系。<br/><br/>步骤2:<br/>对文章的种类增加“投票”类型,展示对多型的处理。<br/><br/>步骤3:<br/>增加webwork实现的GUI。<br/>加入中文支持。<br/><br/>步骤4:<br/>升级到Hibernate 3。<br/><br/><br/>环境说明<br/>---------<br/>程序包中的程序经过测试的运行环境为:<br/>1, Tomcat 5.0.25<br/>2, Hibernate 2.1.7<br/>3, Hibernate 3.0.2<br/>4, Eclipse 3.0.1 (作为IDE)<br/>5, ant 1.6(作为build工具)<br/>6, java sdk 1.4.2<br/>7, mysql 4.1 (作为后台数据库)<br/>8, 至少250M硬盘空间(hibernate 2,3和webwork就将占据138M)<br/><br/>虽然在更高版本中应该可以不加修改的运行,但我们对此不加以保证。(v1.2将对Hibernate 3.0.4进行测试)<br/><br/>安装说明<br/>---------<br/>1, 确认jdk 1.4.2已经正确安装;<br/>2,将本程序包解压,假设目录为: x:\rs\hib-samples<br/>3, 从hibernate的sf下载区下载2.1.7与3.0.2版本:<br/> http://sourceforge.net/project/showfiles.php?group_id=40712<br/>4,将下载的hibernate包解压到x:\rs\hib-samples\hibernate-2.1与x:\rs\hib-samples\hibernate-3,目录结构应该为:<br/> x:<br/> + rs<br/> + hib-samples <--- 本文件包解压的目录<br/> + forum-step1-db-first-middlegen<br/> + forum-step1-db-first-synchronizer<br/> + forum-step2<br/> + ...<br/> + hibernate-2.1 <--- Hibernate 2.1.7解压到这里<br/> + bin <--- 确认bin与doc目录就在解压后的hibernate-2.1目录中<br/> + doc<br/> + ...<br/> + hibernate-3.0 <--- Hibernate 3.0.2解压到这里<br/> + bin <--- 确认bin与doc目录就在解压后的hibernate-3目录中<br/> + doc<br/> + ...<br/><br/>5,确认tomcat 5 安装正确。检查你的系统中,正确设置了CATALINA_HOME环境变量:<br/> 若您是windows 2000/xp系统,请右键点击"我的电脑","高级","环境变量".<br/> 确认其中的CATALINA_HOME环境变量正确指向您的tomcat 安装目录.<br/>例:<br/>CATALINA_HOME=D:\PROGRA~1\APACHE~2\TOMCAT~1.0<br/><br/>6, 确认mysql 4安装正确.<br/>我们建议两种不同的mysql安装搭配:<br/> a) 假若您使用windows平台,并且是初次使用mysql ,我们建议采用另一个免费安装包来安装,它就是easy php: http://prdownloads.sourceforge.net/quickeasyphp/easyphp1-8_setup.exe?download<br/>无需预先安装mysql,只需一次安装,它不仅包含了mysql 4.1.9,还包括了apache, php以及phpmyadmin ,而后者几乎是全球采用率最高的基于浏览器的mysql管理平台,非常简单易用。<br/><br/> b) mysql 正式安装版 + 客户端<br/> mysql可以在此下载:http://dev.mysql.com/downloads/mysql/4.1.html<br/> 客户端有多种,可以采用其自己的mysql administrator,也可以采用mysql front等商业产品。mysql front有三十天免费的无限制试用版本,是一个值得推荐的工具:http://www.mysqlfront.de/download.html<br/><br/> 在安装完mysql之后,请使用客户端或者phpmyadmin建立一个名为forum的mysql数据库,其字符集必须为UTF-8(见下面关于中文的说明,在phpmyadmin中应该选择utf8_general_ci)。另外还需要建立名为forum的用户,密码也为forum,并且对forum具有完全访问权限。(假若您希望使用其它用户名如root,您需要修改hibernate的数据库配置中的连接参数——位于hibernate.cfg.xml中,以及创建数据库表时的连接参数——位于build.xml中。)<br/><br/>7, 确认ant安装正确. ant可以在此下载:<br/> http://ant.apache.org<br/>或 http://www.redsaga.com/down/apache-ant-1.6.1.zip<br/><br/>解压后,请将其bin目录置于系统path中.<br/><br/>8, 注意,我们的成品工程是forum-step3。step1和step2都是中间过程。<br/>确认您可以编译整个step3工程,在命令行下输入,<br/>cd x:\rs\hib-samples (换成您的目录)<br/>cd forum-step3<br/>ant<br/><br/>假若安装正确的话,会给出一个指令说明.<br/>执行:<br/>ant all<br/>它会自动进行数据库初始化、编译、启动tomcat容器.(此命令将会启动tomcat,因此之前tomcat必须处于停止状态)<br/><br/>然后,打开您的浏览器,输入http://localhost:8080/forum 您应该看到我们的示例正常运行.<br/><br/><br/>9, 在您的Eclipse 3中,按照书中的步骤安装hibernate synchronizer.<br/><br/>10,在您的eclipse中,建立两个User Library:<br/>菜单window -> preference -> Java -> Build Path -> User Librarys,分别建立名为Hibernate2,hibernate3,mysql-jdbc的用户库,分别包含对应的lib文件(如hibernate2包含hibernate-2.1目录下的hibernate2.jar及其lib目录下的所有jar文件);<br/><br/>11, 在您的eclipse 中,导入各个目录下的.project文件,以建立工程.(工程名为step1,step2,step3,step4)。在工程的类路径配置中,使用上一步创建的用户库(step1-step3使用Hibernate2,step4使用hibernate3)。确保没有编译错误。<br/><br/>好了,您现在可以开始阅读代码,作一些自己的改变,看看您能得到什么结果 :)<br/><br/>中文处理说明<br/>------------<br/><br/>关于中文的处理,是在step3加入的,因此在step1以及step2中,请使用英文进行实验。具体进行的处理为全程采用UTF-8编码.<br/>1,mysql创建时,字符集必须选择UTF-8<br/>2,在mysql jdbc连接的url中,必须指定采用utf-8 encoding。<br/>jdbc:mysql://localhost/forum?useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8<br/>3,在jsp页面中,指定页面采用UTF-8编码.<br/> <%@ page contentType="text/html;charset=utf-8"%><br/><br/>假若在您的项目中,必须使用GBK编码,则在以上的各个地方,都需要把UTF-8更换为GBK方可正常使用。<br/><br/><br/>版本更新<br/>-----------<br/>v1.2 (PLAN,TBD)<br/> * 转换到JTA<br/> * 给出一个脱离DAO模式的例子<br/> * 给出for hibernate 3的xdoclet例子<br/><br/>v1.1 (2005.5.25)<br/> * 分离db目录下的build.xml<br/> * 增加了对投票的图形显示<br/> * 修正了和webwork相关的一个中文bug<br/><br/>v1.0 (2005.4.20)<br/> * 初始版本<br/><br/>请访问http://www.redsaga.com/hibernate_book.html,检查此下载包的更新。<br/>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值