admin 管理员组文章数量: 1086019
2024年3月28日发(作者:always是什么意思中文意思)
维普资讯
基于H i bernate一对多,多对多关联的研究
文0高淑芝陈小伟(沈阳化工学院信息工程学院辽宁沈阳)
摘要:本文深入探讨Hi be r nat e一对多,
Mapping)的工具,它对JDBC进行了轻量
多对多关联的机制,提出了一种采用Hi b e r—
级的对象封装,使程序员可以使用对象编
nat e的J2 ee应用开发策略。在这种策略中,
程思想来操作数据库。它不仅提供了从
模型层用Hibernate实现,这样可以大大降低
J ava类到数据表的映射,也提供了数据查
代码的耦合性以及提高系统的开发效率。
询和恢复机制。相对于使用JDB C和SQL
关键词:Hibernate;OgM;持久层;一对 来操作数据库,使用Hibernate能大大的提
多
高实现的效率。Hibernate框架用配置文件
中图分类号:TP3l1文献标识码:A
的形式来定义Java对象和数据表之间的映
射关系,同时在更深的层面将数据表之间
引言
ava对象之间的继承及包含
随着Java技术的逐渐成熟与完善,作
的关系解释为J
为建立企业级应用的标准平台,J 2 E E平
等关系。通过使用HQL语句将复杂的关系
台得到了长足的发展。借助于J 2E E规范
算法用对象的方式描述,在很大程度上简
中包含的多项技术:Enterprise JavaBean
化了对数据的查询,加快了开发的效率。
(EJB)、Java Servlets(Servlet)、Java Server 在Hibernate中有一个简单而直观的API,
用于对数据库所表示的对象执行查询。要
Pages(JSP)、Java Message Service(JMS)等,
开发出了许多应用系统。但是,在传统
创建或修改这些对象,只需在程序中与它
J 2 E E应用的开发过程中也出现了一些问
们进行交互,然后告诉Hibernate保存即
题:1)数据模型和逻辑模型之间的矛盾。 可。这样,大量封装持久化操作的业务逻
目前使用的数据库基本上都是关系型数 辑不再需要编写烦琐的JDB C语句,从而
据库,而Java本质上是一种面向对象的语 使数据持久层得到了极大的简化。
言,对象在存储和读取时使用s Q L和
J D B C进行数据库操作,降低了编程的效
率以及系统的可维护性;为了降低代码
的耦合性,提高系统的开发效率,本文提
出了一种基于Hibernate框架的J2EE应用
一
、
开发策略。
二、分层体系结构
分层体系结构定义了实现不同关系代
码之间的接口,允许关系实现方式的改
变不会对其他层的代码造成重大的破坏。
同时,分层也决定了其间出现的中间层
的类型。分层规则如下:层由上到下进行
通信。每一层仅依赖于其直接的下层;除
了其直接下层,每一层都不知道任何其
他层。
在分层体系结构中,最常见,最简单
二、O开M:
以中间件的形式存在,主要实现程序对象
到关系数据库数据的映射,O R M中间件
能在任何一个J a v a应用程序的业务逻辑层
和数据库层之间充当桥梁。
(一)0RM技术的优点:
提高了开发效率。由于ORM可以自动
对实体对象与数据库中的表进行字段与属
性的映射,所以实际操作中已经不再需要
个专用的,庞大的数据访问层。
0RM提供了对数据的映射,能够像操
作对象一样从数据库中获取数据,而不用
直接进行sQL编码。
四、单向关联:
域模型是对一个真实事务的模拟实
现,是抽象的结果。它可以代表业务领域
中的人,地点,事务或者是概念,它能真
实地反映出模型中元素之间地关系。构成
域模型地基本元素是对象。在域模型中,
类之间存在4种关系:关联,依赖,聚集,
般化。关联是指类之间的引用关系。如
果类A与类B关联,那么被引用的类B被
定义为类A的一个属性。关联是最常见的
种关系,分为一对一,一对多和多对多
几种,其中一对多关联还分为单向关联和
双向关联。一对多关联是使用频率最高的
种关联关系,在建立一对多关联的情况
下,可以很方便的从一个对象导航到与之
关联的对象,而不必再反复的执行数据检
索;还可以实现关联对象之间的级联操
作,例如级联更新或删除关联对象。
单向的一对多关联包括只建立从一方
到多方的关联,又包括只建立从多方到一
方的关联,在此只建立从多方到一方的关
联为例。表tb—S0 rt(商品分类表) 和
tb
merchandise(商品信息表)
一
一
一
一
ORM(0bject-Relational Mapping)是
也是最有效的就是MV C(MOde1 View
Contro1)模式了。
持久层是在M V C三层架构的基础上
提出的。在提出持久层之前,业务逻辑层
在实现业务逻辑的同时,还需要访问数据
库,这为业务逻辑的扩展增加了难度。有
了持久层,业务罗基层只需负责业务逻辑
的实现,对数据的操作则交给持久层,是
每一段业务逻辑代码的目的更明确,对后
台数据库的改变也变得非常简单。
持久层封装了数据访问细节,为业务
逻辑层提供了面向对象的A P I。持久层的
意义在于:代码可重用性高,能够完成所
有的数据库访问操作;能够支持多种数据
库平台;
具有相对独立性,底层数据发生变化
时,只需修改持久层代码,只要对其上层
提供A P I不变,则不用修改业务逻辑层的
代码。
对象到关系地映射,通过使用描述对象和
数据库之间映射地元数据,将java程序中的
对象自动持久化到关系数据库中。本质上,
0 R M的工作是将数据从一种形式转换到另
外一种形式,这意味着会有一些性能损失。
然而,如果ORM是作为中间件实现的,就
会有许多机会可以进行优化,而在手工编
码的持久层中这种机会是不存在的。
O R M是随着面向对象的软件开发方
法而产生的。面向对象的开发方法是当今
企业级应用开发中的主流方法。关系数据
库是企业级应用中永久存放数据的主流数
据存储系统。对象和关系数据是业务实体
在建立从Merchandise类到Sort类之
的两种表现形式,业务实体在内存中表现
间的关联时,因为一种商品只属于一种类
为对象,在数据库中表现为关系数据。内
别,所以只需要在Merchandise类中定义
存中的对象之间存在关联和继承关系,而
个S O rt的属性,用来存放它所属于的商
在数据库中,关系数据无法直接表达多对
品类别对象。方法如下:
多关联和继承关系。因此O R M系统一般
(1)在Merchandise类创建一个Sort类
的对象及其对应的set()和get()方法,代码
一
目前在持久层领域,已经出现了许多
优秀的0RM软件,ORM具有中间件的特
性,Hibernate就是其中的一种。
Hibernate作为一个中间件,实现的
是持久层的功能。Hibernate的优点是,
使用者不需要关心其内不是如何实现
的,只要知道如何访问它的接口就可以
了。
一
如下:
private Sort sort;
pubhc void setSort id(Sort sort_id){
this.sort ̄id=sortid;
}
public Sort getSort
id(){
Return sort
id;
Hibernate是一个数据持久层框架,是
种实现对象和关系之间映射(O/R
0 在业务逻辑层与数据库层之间豹作用
}
(2)在Merchandise类对应的映射文件
Merchandise.hbm.xml中填写(下转1 1 0页)
lO9
维普资讯
蕊
一
文0王海玲(乐亭县振华建设监理有限公司)
、
羹
要求;
(6)编制旁站监理程序。
(二)旁站监理人员的主要工作
(施工员)的依赖而放松责任心;
(4)旁站监理应与平行检验、抽查巡
视结合进行。随机进行可能收到的效果更
浅析监理过程中如何做好旁站监理
旁站监理的作用
旁站监理的主要作用是:通过对建设
工程质量形成工程中的一些重点问题、重
要部位、关键工序和建设行为的跟踪检查 (1)检查施工企业现场人员到岗、特 佳,目的是要让施工人员按规定自觉施
(5)旁站要有合适的工作方法,首先
和监控。及时制止和纠正不恰当的施工操 殊工种人员持证上岗以及施工机械、建筑 工,关键是要发现问题、解决问题;
作,同时见证承包单位的施工过程,最终 材料准备情况;
形成的旁站监理记录。通过旁站不但能及 (2)在现场跟班监督关键部位、关键 要体谅施工人员的辛苦,但对发现的问题
时掌握施工中最真实的资料,而且根据取 工序施工中执行施工方案及工程建设强制 决不能放过。对客观原因造成的问题要共
得的数据,决定下一步的对策,推动和调 性标准情况; 同研究解决;对主观原因造成的问题则要
节后续的监理工作。 (3)核查进场建筑材料、建筑构配件、 坚决制止、决不迁求;
二 旁站监理的实施 商品混凝土的出厂质量证明、质量检验报 (6)认真做好旁站记录和监理日记,
(一)制定旁站监理方案 告,督促施工企业进行现场检查和进行必 并保存好旁站监理原始资料。旁站监理人
项目监理部在编制监理规划时,应同 要的复验; 员和施工质检人员应在旁站记录上共同签
时编制旁站监理方案。旁站监理方案是监 (4)发现有违反工程建设强制性标准 字,未经签字或问题未经处理,不得进行
理人员在充分掌握工程信息资料的前提 行为的,有权责令施工企业立即改正;发 下一道工序施工。
下,根据工程的具体特点和内容,确定出 现施工活动可能危及工程质量时,及时向 (四)对旁站监理记录的要求
重点监控的关键部位、重点工序、特殊工 总监理工程师汇报,由总监理工程师采取 (1)记录内容要真实、准确、及时;
序,以明确旁站监理的范围、内容、程序 必要的措施。 (2)对旁站的关键部位或关键工序,
和职责,形成旁站监理作业指导方案。这 (三)旁站监理的工作方法 应按照时间或工序形成完整的记录。
个指导方案应包括: (1)熟悉图纸、施工组织设计、相关 (3)记录表内容填写要完整,未经旁
(1)旁站监理范围:确定各主要分部、 规范的强制性条文及旁站监理方案。 站监理人员和施工单位质检人员签字不得
分项工程的关键部位和关键工序; (2)向建设单位和承包商送达“旁站 进入下道工序施工;
(2)旁站监理的内容:根据《房屋建 监理方案”,关键工序施工前2 4小时,书 (4)记录表内施工过程情况是指所旁
筑工程施工旁站监理管理办法 结合工程 面通知监理单位成为规矩和习惯; 站的关键部位和关键工序施工情况。
的具体内容和特点确定各专业工程的旁站 (3)承包商才是工程质量形成的最主 (5)监理情况主要记录旁站人员、时
内容; 要的主体,其质量保证体系是工程建设质 间、旁站监理内容、对施工质量检查情况、
(3)配备相应旁站人员和检测设备; 量的基础。如何保证该体系正常、有效地 评述意见等。将发现的问题做好记录,并
(4)确定旁站监理人员的主要职责; 运转是监理工程师实施质量控制的最重要 提出处理意见:
(5)制定旁站监理记录的格式和内容 的工作。监理的旁站决不能造成承包商 (6)其它栏门要填写完整。
(上接j 0 9页)如下映射信息: Merchandise类的关联,这样一对多的双向 <key>子元素的column属性:为待映
<many—to one name=”sort”
关联就建立成功了,具体方法如下: 射类对应表的外键(sort—id).
column=”sortid”class=”cxw.hibernate.
(1)因为一个商品类别可能对应多个商
<one-to—many>子元素的class属性:
Sort’’lazy--’’false”/、)
品,所以在Sort类创建一个java.util.Set 为待映射类的名称,也表明在<set>元素
<many to—one>元素用来建立从多方
类型的属性及其对应的set()和get()方法,
的name属性值中存放的是一组class属性
到一方的映射,是<class>元素的子元素,
并且必需对S e t型属性进行实例化: 值类型的对象,即待映射类的名称
位于<property>元素之后。
Private Set merchandises new HashSet();
(Merchandise)。
<many to—one>元素属性说明:
Public void setMerchandise(Set
六,总结与展望
Name:为待映射的属性名称,即在
merchandises){
Hibernate是一个功能强大、高性能、
代码(1)中创建的持久化类的对象(s0rt).
T h i s.
非常流行的ORM工具,它推动了基于普
C olumn:为该文件映射类对应表的
merchandises=merchandises;
通Java对象模型、用于映射底层数据结构
外键,即表tb merchandisede的外键
} 的持久对象的开发,能够提供高级数据查
(sort—id).
Public Set getMerchandises(){
询和检索服务。作为一个成熟且强大地持
Class:为name属性值的类型,即在
Return merchandises;
久层框架,集诸多持久层设计思想之大
代码(1)中创建的持久化类的的对象的类型
}
成,能建立面向对象地域模型与关系模型
(Sort)。
(2)在So rt类对应的映射文件So rt. 之间地映射。能极大的提高开发效率,使
LazY:用来设定对映射类是否采用延
hbm.xml中填写如下映射信息:
系统具有更好的可维护性和可扩展性。这
迟检索策略,在此设为false,即采用立即
<set name:”merchandises”lazy=”
种开发策略正逐渐被众多程序员所接受,
检索;
false”>
在实际开发中得到广泛的应用。
Not—null:用来控制外键是否允许为
<key column=”sortid”>
空,默认not-null属性为false,即允许为
<one—to—many class=”cxw.
参考文献
空。
hibernate.Merchandises”/>
[I]王国辉,马文强,Hibernate应用开发完全手
Cascade:用来设置级联保存与更新。
</set>
册人民邮电出版社,2007.
默认为n on e,即不采用任何级联操作。
<set>元素的name属性:为待
[2]刘洋,精通Hibernate,电子工业出版社,2005.
五、双向关联:
映射的属性名称,为在代码段(1)中创建的
阎孙卫琴,精通Hibernate:Java对象持久化技术
所谓双向关联,就是即建立从一方到 Set类型的属性(merchandises).
详解,电子工业出版社,2 0 0 6
多方的关联,又建立从多方到一方的关联。
<set>元素:表明该元素的
[4]夏昕,深入浅出Hibernate,电子工业出版社,
在上面的基础上,建立从S o r t至U name属性值的类型为java.util.Set.
2005
1l0
版权声明:本文标题:基于Hibernate一对多,多对多关联的研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711625538a602424.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论