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 


本文标签: 监理 旁站 对象 施工