开发工具:
文件大小: 8mb
下载次数: 0
上传时间: 2019-03-04
详细说明:
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。黑马程序员偿智播下
com
改变中国∏T教育,我们正在行动
1213 JavaEE开发三层结构
EE开发的二层结构:
客户端层
Itml, CSS, IS
TER
Servlet, SP
上所有的应用
业务逻辑层
EIB:企业级 Javabean
uts2+Spring+Hibernate). SSM
持久层
E开发的经典三层结构
客户端层
wb业务
厂持久层
S…v1wt,JsP
JavaBean
JDBc
Struts2
Hib
Spring
Struts
DLL⊥1s
DAO钓框架
Webwork
Sprinelvc
Spring DBC的模板
122 Hibernate的概述
122.1什么是 Hibernate
Hibernate框架是当今主流的Java持久层框架之一,由于它具有简单易学、灵活性强、扩展性强
等特点,能够大大地简化程序的代码量,提高工作效率,因此受到广大开发人员的喜爱。
Hibernate是一个开放源代码的ORM( Object Relational Mapping,对象关系映射)框架,它对
⑩DBC进行了轻量级的对象封装,使得Jaa开发人员可以使用面向对象的编程思想来操作数据库。
Hibernate(开放源代码的对象关系映射框架)」
H bernate是一个开放源代码的对象关系映射框架,它对DBC进行了常轻里级的对象封装,它将POO与劫据库表建立
独射关系,是一个全自动的m框架, hi bernate可以自动生成sQL语句,自动执行,使得ava程序员可以随心所欲的使用对
象编程思维来操缦颏据库。 Hibernate可以应用在任何使用JBC的场合,既可以在Java的客户端程序使用,也冋以在
Seretse的Web应用中使用,最具革命意义的是, Hibernate可以在应用EB的EE架构中代CMP,完成数据持久化的
重任
Hibernate就是一个持久层的ORM的框架
ORM Object Relational Mapping对象关系映射
1222为什么要学习 Hibernate
使用传统的JBC开发应用系统时,如果是小型应用系统,并不觉得有什么麻烦,但是对于大
型应用系统的开发,使用JDBC就会显得力不从心。例如对几十、几百张包含几|个字段的表进行
插入操作时,编写的SQL语句不但很长,而且繁琐,容易出错:在读取数据时,需要写多条 getS
北京市昌平区北七家宏福创业园修正大厦3层电话:400-618-9090
黑马程序员|传智播客旗下
th高端T教育品牌
改变中国∏T教育,我们正在行动
语句从结果集中取出各个字段的信息,不但枯燥重复,并且工作量非常大。为了提高数据访问层的
编程效率, Gavin King开发出了一个当今最流行的的ORM框架,它就是 Hibernate框架。
所谓的ORM就是利用描述对象和数据库表之冋映射的元数据,自动把Java应用程序中的对象,
持久化到关系型数据库的表中。通过操作Java对象,就可以完成对数据库表的操作。可以把ORM
理解为关系型数据和对象的一个纽带,开发人员只需要关注纽带一端映射的对象即可。ORM原理如
图1-1所小。
业务逻辑模型
持久化层
数据存储层
域模型对象
o瞋射
关系型数据库
ORM原理
与其它操作数据库的技术相比, Hibernate具有以下几点优势
●^ Hibernate对JDBC访问数据库的代码做了轻量级封装,大大简化了数据访问层繁琐的重复
性代码,并且减少了内存消耗,加快了运行效率
Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,它很大程度的
简化了DAO( Data Access Object,数据访问对象)层编码工作。
● Hibernate的性能非常好,映射的灵活性很出色。它攴持很多关系型数据库,从一对一到多
对多的各种复杂关系。
可扩展性强,由于源代码的开源以及API的开放,当本身功能不够用时,可以自行编码进
行扩展。
123 Hibernate的入门:
123.1下载 Hibernate5
http://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/
Home/ hibernate-orm /5.0.7Final
Name
Modified
Size
Downloads/ week
↑ Parent folder
hibernate-release-5.0.7. Final. zip
2016-01-1394.1MB
hibernate-release-5.0.7.Final tgz
2016-0113584MB
Hibernate50.7版本下载后,解压完的目录结构如图所示。
北京市昌平区北七家宏福创业园修正大厦3层电话:400-6189090
黑马程序员|传智播客旗下
th高端T教育品牌
改变中国∏T教育,我们正在行动
台电脑N新加卷0D) hibernate-release:507Fnal
名称
修改日期
大小
documentation
2016/1/131245文件夹
2016/1/131245文件夹
project
2016/1/131245文件夹
自 changelog. txt
2016/1/131233文本文档
46 KB
回 hibernate_logo. gif
2013/4/1711:37GF文件
2 KB
a lgpl. txt
2013/4/1711:37文本文档
从图可以看出, hibernate5.0.7的解压s目录中包含一系列的子目录,这些子目录分别用于存放不同
功能的文件,接下来针对这些子目录进行简单介绍,具体如下:
documentation文件夹:存放 Hibernate的相关文档,包括参考文档的API文档。
lb文件夹:存放 Hibernate编译和运行所依赖的JAR包。其中 required子目录下包含了运
行 Hibernate5项目必须的JAR包
project文件夹:存放 Hibernate各种相关的源代码。
在lb/ required子目录中,包含的JAR包
玄台电脑新加卷(D) hibernate-release-5.0.7 inal lib k required
名称
修改日期
大小
画antr2,7jar
2014/4/28 20: 30 Executable Jar File
435KB
围dom4i-1.61ar
2014/4/28 20: 28 Executable Jar File
307KB
s geronimo- ita_1.1_spec-111.jar
2015/5/511:26
Executable Jar File
16 KB
s hibernate-commons-annotations-5.0..2015/11/30 10:22 Executable Jar File
74 KB
s hibernate-core-5.0.7. Final. jar
2016/1/13 12: 35 Executable Jar File 5,453 KB
s hibernate -jpa-21-api-1..0.Final jar 2014/4/28 20:30Executable Jar File
111KB
画当 janex-2.0.0 inal, jar
2015/11/30 10: 22 Executable Jar File
184KB
s javassist-3181-GA jar
2014/4/28 20: 28 Executable Jar File
698KB
包 jboss-logging330 naljar
2015/5/28 12: 35 Executable Jar File
66 KB
1.2.3.2创建数据库和表
create database hibernate daoli
use hibernate dayL
CREATE TABLE cst customer
cust id` bigint(32) NOT NULL AUTO INCREMENT COMMENT'客户编号(主键)',
cust name varchar(32) NOT NULL COMMENT’客户名称(公司名称)’,
cust source` varchar(32) DEFAULT NULL COMMENT·客户信息来源’,
cust industry varchar(32) DEFAULT NULL COMMENT'客户所属行业',
ct1eVe1 varchar(32) DEFAULT NULL COMMENT’客户级别',
c: t phone archa(64) DEFAUL NULL COMMENT'固定电话',
cust mobi1 e varchar(16) DEFAULT NULL COMMENT'移动电话',
北京市昌平区北七家宏福创业园修正大厦3层电话:400-618-9090
黑马程序员|传智播客旗下
th高端T教育品牌
改变中国∏T教育,我们正在行动
PRIMARY KEY( cust id)
ENGINE=InnoDB AUTO INCREMENT=9 DEFAULT CHARSET=utf8i
12.33引入 Hibernate的开发包
数据库驱动包
mysql-connector-java-5.1.7-bin jar
2014/7/818: 41 Executable Jar File
694KB
Hibernate/lib/required/jar
画antr-2.77jar
2014/4/28 20: 30 Executable Jar File
435KB
圖dom4-161ar
2014/4/28 20: 28 Executable Jar File
307KB
E geronimo-jta_1.1_spec-1.1.1 jar
2015/5/5 11: 26 Executable Jar File
16 KB
a hibernate-commons-annotations-5.0..2015/11/3010:22Executable JarFile
74 KB
hibernate-core-5.0.7.Final. jar
2016/1/13 12: 35 Executable Jar File 5,453 KB
s hibernate -jpa-2.1-api-100. Final jar 2014/4/28 20: 30Executable Jar File
111KB
sljandex-2.0.0.Final jar
2015/11/30 10: 22 Executable Jar File
184KB
当 javassist:3181- GA jar
2014/4/28 20: 28 Executable Jar File
698KB
jboss-logging-3. 3. 0.Final jar
2015/5/28 12: 35 Executable Jar File
66 KB
日志记录的包
画log4-12.16jar
2015/8/614:04
Executable Jar File
471KB
画s4api161ar
2015/8/614: 05 Executable Jar File
25 KB
幽sH4-og412-1.7.2jar
2015/8/614: 05 Executable Jar File
9 KB
1.234创建实体(持久化类)
持久化类是应用程序中的业务实体类,这里的持久化是指类的对象能够被持久化保存到数据库中。
Hibernate使用普通Java对象( Plain Old Java Object),即PoJo的编程模式来进行持久化。POJO类
中包含的是与数据库表相对应的各个属性,这些属性通过 getter FI setter方法来访问,对外部隐藏了
内部的实现细节。下面就来编写 Customer持久化类。
在项目src目录下,创建 cn. itcast domain包,并在包中创建实体类 Customer(对应数据库表
cst customer), Customer类包含与 cst customer数据表字段对应的属性,以及相应的 getXxx O和
setXxx O方法。
public class Customer t
private Long cust idi
private string cust namei
private string cust sourcei
private String cust industry
private string cust level
private string cust phone;
private String cust mobile;
北京市昌平区北七家宏福创业园修正大厦3层电话:400-6189090
黑马程序员|传智播客旗下
th高端T教育品牌
改变中国∏T教育,我们正在行动
public Long get Cust id() i
return cust id
public void setcust id(Long cust id) I
七hs. cust lc= cust id;
public string getCust name()
return cust name
public void setCust name(String cust name)t
七his.C1 st name
cust name
public String get Cust source() t
return cust source
ublic void setCust source(String cust source)t
this cust source cust sourcei
public String get Cust industry ()
return cust industry
public void set Cust industry(string cust industry)I
this cust industry cust industry
}
public string get Cust level() I
return cust level
public void set Cust level(String cust level
st level
public String get Cust phone() t
return cust phone
public void setCust phone(String cust phone)[
this cust phone cust phone
public String getcust mobile()(
return cust mobile
}
public void setCust mobile(String cust mobile) t
this, cust mobile cust mobile
北京市昌平区北七家宏福创业园修正大厦3层电话:400-6189090
黑马程序员偿智播下
com
改变中国∏T教育,我们正在行动
1.2.3.5创建映射文件
实体类 Customer目前还不具备持久化操作的能力,而 Hibernate需要知道实体类 Customer映射到数
据库 Hibernate中的哪个表,以及类中的哪个属性对应数据库表中的哪个字段,这些都需要在映射文
件中配置。
在实体类 Customer所在的包中,创建一个名称为 Customer hbm.xml的映射文件,在该文件中定义了
实体类 Customer的属性是如何映射到 cst customer表的列上的。
K?xml version=1.0 encoding="UTF-8?>
< DOCTYPE hibernate-mapping PUBLIC
-//Hibernate/Hibernate Mapping DTD 3. 0//EN
whttp://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd>
property name="cust level"column="cust_ level"yn/>
12.3.6创建 Hibernate的核心配置文件
Hibernate的映射文件反映了持久化类和数据库表的映射信息,而 Hibernate的配置文件则主要用来配
置数据库连接以及 Hibernate运行时所需要的各个属性的值。在项目的src下创建一个名称为
hibernate. cfg. xml的文件
?xm version-"1.0 encoding="UTE-8?>
< DOCTYPE hibernate-confiquration PUBLIC
-//Hibernate/Hibernate Configuration DTD 3O//EN
http://www.hibernateorg/dtd/hibernate-configuration-3.0.dtd">
true
hbm2dd1.auto的取值
:不用 Hibernate自动生成表
create
每次都会创建一个新的表.(测试)
create-drop:每次都会创建一个新的表,执行程序结束后删除这个表.(测
北京市昌平区北七家宏福创业园修正大厦3层电话:400-6189090
黑马程序员|传智播客旗下
th高端T教育品牌
改变中国∏T教育,我们正在行动
update
如果数据库中有表,使用原来的表,如果没有表,创建一个
新表.可以更新表结构。
validate
只会使用原有的表.对映射关系进行校验
update
该配置文件设置了数据库连接的相关属性以及其它的一些常用属性,并且通过 mapping的 resource
属性将对象的映射信息加入到了 Hibernate的配置文件中
1.2.37编写测试代码
在项目中新建一个名称为 cn. itcast test的包,然后在包中建立一个名为 HibernateDemol. java的文件,
该文件是用来测试的类文件。
public class HibernateDemol I
aTest
使用H
a parnate
保存数据
public void demo1()t
//1.加载配置文件:
Configuration cfg new Configuration () configure()i
//2.创建一个 SessionFactory
SessionF actory sessionFactory cfg. buildsessionFactory()i
/3.创建 Session对象. Session对象类似 Connection
Session session sessionFactory. openSession()
//4.开启事务
Transaction tx session beginTransaction (
/5.执行相关操作
Customer customer new Customer o
customer. set Cust name("小王");
customer. set Cust source("网络推广")
session. save( customer)
//6.事务提交
tx commit(
//7.释放资源
session. close();
北京市昌平区北七家宏福创业园修正大厦3层电话:400-6189090
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.