APP下载

电源专业英语词汇系统NHibernate持久层设计

2015-01-16张鹏张联

电子设计工程 2015年11期
关键词:主键小类电源

张鹏,张联

(渤海大学 外国语学院,辽宁 锦州 121013)

随着经济快速发展,人民群众物质文化水平不断提高,电能的应用远远超过了人们的传统认识范围,成为科学技术发展和国民经济飞跃的主要动力,持续地改变着人们的生活[1]。电源是向设备提供电能的装置,也称电源供应器。随着电力行业的发展,电源的种类越来越多,从国外引进的先进技术也越来越多,因此涉及的英文专业词汇也越来越多,这些词汇的学习、记忆和使用成为工程技术人员的难题。建立专业词汇系统,用对电源的分类方式对词汇进行分类,便于电源工程技术人员有选择地按自己的专业方向进行学习。

持久化(Persistence)是把数据保存到可掉电式存储设备中供以后使用。持久层是在系统逻辑层面上用于实现数据持久化的一个相对独立的领域,是对数据库中的数据进行存储、检索、更新和删除的一组类和组件[2]。持久层设计是软件开发的基础性工作,本文基于.NET平台的NHibernate技术对电源专业词汇系统进行持久层设计,为系统开发提供技术支持。

1 数据存储结构设计

电源按大类可分为普通电源和特种电源[3-5],普通电源又可分为开关电源、逆变电源、交流稳压电源、变压器电源等小类;特种电源又可分为高压电源、医疗电源、军用电源、航空航天电源、激光电源等小类。根据电源分类,将电源专业词汇系统的数据存储设计为“电源大类表(PowerBigCateg)”、“电源小类表 (Power Small Categ)”和 “电源专业词汇表(Prof Vocabulary)”三个表。表之间存在两个“一对多”联系,即“电源大类表”和“电源小类表”实体之间是一对多联系,一个电源大类包括多个电源小类,一个电源小类只能属于一个电源大类;“电源小类表”和“电源专业词汇表”之间是一对多联系,一个电源小类包括多个电源专业词汇,一个电源专业词汇只能属于一个电源小类。“电源大类表”主键为“大类代码”字段。“电源小类表”主键为“小类代码”字段,“大类代码”字段为与 “电源大类表”一对多联系相对应的外键(FK_BigCateg_SmallCateg)。 “电源专业词汇表”主键为“词汇代码”字段,“小类代码”字段为与“电源小类表”一对多联系相对应的外键(FK_SmallCateg_ProfVocabulary)。根据以上的分析,基于Microsoft SQL Server 2005数据库管理系统设计的系统数据结构及关系图如图1所示。

图1 系统数据结构及关系图Fig.1 Data structure and relationship diagram of system

2 NHibernate体系结构

对象关系映射(O/RM,Object-Relation Mapping)是把在数据库中直接进行的原始操作,演变为对类的属性和方法的操作,是为了解决面向对象程序设计与关系数据库之间存在不匹配的矛盾而产生的技术,程序员可以采用非常简单的方式将程序中的对象自动持久化到关系数据库中。NHibernate是.NET领域流行的O/RM框架,NHibernate起源于Hibernate。Hibernate是基于JAVA平台的对象关系映射框架,由于Hibernate取得的巨大成功,Microsoft运用其基本思想开发了NHibernat,是基于.NET平台的对象关系映射框架[6]。NHibernat框架体系结构如图2所示。

图2 NHibernate框架体系结构Fig.2 NHibernate framework architecture

从图2中可以看出,NHibernate处于Database和Application之间,为应用程序提供持久化对象到数据库的服务。NHibernate通过分离Database和Application,使应用程序的可移植性得以实现。对图2中的主要组成元素描述如下:持久化操作(Persistence operations)使用3种查询机制,分别是 HQL Query、QBC Query和 Native SQL Query; 配置文件(Configuration file)主要是用来配置一些全局性参数;映射文件(Mapping file)以class为核心元素,规定类与库表的映射,子元素用于规定类属性与库表字段之间的映射;会话(Session)和会话工厂(Session factory)则是面向对象模型与关系模型之间运行时的连接纽带;事务处理(Transaction processing)实现对底层 ADO.NET、ODBC、OLEDB 的相关 API进行了封装。

3 实体类设计

持久化类(Persistent class)是指其实例需要被 Hibernate持久化到数据库中的类。Hibernate板需要为数据库中的每一个表编写一个持久化类,为每个持久化属性声明访问器(getters和 setters)由于属性不一定需要声明为public,可以对 default、procted、internal、private 的属性一样进行持久化。必须提供一个不带参数的默认构造方法,访问级别是public或protected类型。持久化类中所有的属性,必须声明为非密封的,也就是不能带有sealed。持久类不需要继承NHibernate的类或实现NHibernate接口,提高了持久化类的独立性[7-8]。由于持久化类具有规范性和规律性,因此可以使用代码生成工具根据表结构自动生成,无需开发人员手工编写类代码。由于持久化类的代码较多,受文章篇幅所限,本文只给出“电源小类表(PowerSmallCateg)”的持久化类设计,代码如下:

using System;

namespace NHibernate.Demo.PowerVocabulary

{

public class PowerSmallCateg

{

//对象属性

private Int16 DigitalCode;

private String PinyinCode;

private String SmallCategName;

private String SmallCategCode;

private String BigCategCode;

//属性函数

public Int16 DigitalCode

{get{return DigitalCode;}

set{DigitalCode=value;}

}

public String PinyinCode

{get{return PinyinCode;}

set{PinyinCode=value;}

}

public String SmallCategName

{get{return SmallCategName;}

set{SmallCategName=value;}

}

public String SmallCategCode

{get{return SmallCategCode;}

set{SmallCategCode=value;}

}

public String BigCategCode

{get{return BigCategCode;}

set{BigCategCode=value;}

}

}

}

4 映射文件设计

NHibernate每个持久化类都有与之相对应的映射文件,通过映射文件,将数据表中的记录转化为对象,将记录中的字段转化为对象的属性。映射文件除描述了NHibernate运行时需要的元素类型和属性外,还包含额外的元素属性,如被映射字段是否允许为空等。所有映射文件均使用nhibernatemapping-2.0 schema。通常的NHibernate映射文件和类名相同,扩展名为“hbm.xml”。映射文件由实体映射和关联映射两部分构成。

1)实体映射,建立关系型数据库中的表和程序中的业务类之间的对应关系,包括“表名——类名”映射、“主键”映射和“字段——属性”映射。“表名——类名”映射使用

2)关联映射,对表之间的关联关系进行映射,包括“一对一”模式、“一对多”模式、“多对一”模式和“多对多”模式。其中,“一对一”模式使用

中都通过

“电源小类表(PowerSmallCateg)”表的映射文件设计如下:

5 访问数据库设计

API(Application Programming Interface,应用程序编程接口)是操作系统提供的预先定义好的一组函数,包含在Windows系统目录下的动态连接库文件中。.NET平台应用NHibernate的API来访问数据库,使得开发人员无需访问源码,无需要理解内部工作机制的细节,就能完成对数据库的Query、Insert、Update、Delete 等操作[9]。 NHibernate API访问数据库操作设计的一般流程如图3所示。

图3 NHibernate访问数据库操作Fig.3 NHibernate access to the database operation

NHibernate API访问数据库操作设计分四步:一是,通过“new Configuration()”创建一个 Configuration 对象,解析所有.NET对象与数据库的映射关系;二是,通过“config.BuildSessionFactory ()” 创建 SessionFactory, 通过“factory.OpenSession()”方法来获取 Session实例;三是,通过调用Session 接口操作数据库的“Save()、Update()、Delete()、Load()、Find()”等方法实现对象与关系数据库之间的交互;四是,无论事务执行成功或失败,都调用close()方法释放Session实例占用的资源。

6 结束语

提出独立的“持久层”的概念,是因为封装了数据访问的细节,与系统其他部分具有较为清晰和严格的逻辑边界。NHibernate对数据库结构提供了较为完整的封装,将数据库模式映射为较完全的对象模型,支持封装和继续机制,功能较强大,比一般的ORM灵活性高。本文基于NHibernate框架设计电源专业词汇系统的持久层,开发人员可以完全按照对象模型操纵数据库,为快速软件开发奠定了基础。本软件的开发与应用,对电源专业工程技术人员掌握学习英文专业技术词汇并提高专业技术水平具有重要作用。

[1]百度文库.电能对生产生活的影响 [EB/OL].http://wenku.baidu.com/link?url=q6HK6nozl8MUTrrvMGF7zg1dP4uGX-4DY3j4Aw9Gesk-8xuywsAkUnq8WrokaYwrpLDhJ7TBwcLb zxA5E11oqXHvCAM2RJog-exwGkV10kC,2014-9-11.

[2]邓广胜.基于NHibernate的SaaS管理平台研究与应用[D].安徽:合肥工业大学,2013.

[3]史平君.特殊而应用广泛的电源—特种电源[J].电源技术应用,2010,13(6):1-7.SHI Ping-jun.Special power supply:a special and widely used power[J].Application of Power Technology,2010,13(6):1-7.

[4]百度百科.电源[EB/OL].http://baike.baidu.com/view/13542.htm?fr=aladdin,2014-9-1.

[5]Gregor Dolanc,Darko Belavi?,Marko Hrovat,et al.iature fuel reformer system for portable power sources[J].Journal of Power Sources,2014,271(20):392-400.

[6]王明倩,刘立强,王宏宇.ORM技术——Nhibernate在考务管理系统中的应用研究[J].长春工业大学学报:自然科学版,2009,30(3):352-356.WANG Ming-qian,LIU Li-qian,WANG Hong-yu.Application of ORM Nhibernate in the exam administration system[J].JournalofChangchun University ofTechnology:Natural Science Edition,2009,30(3):352-356.

[7]王培培,张云华.基于ASP.NET的医疗设备管理系统设计[J].电脑编程技巧与维护,2013,20(8):83-85.WANG Pei-pei,ZHANG Yun-hua.The design of a managerial system of medical equipment based on ASP.NET[J].Computer Programming Skills&Maintenance,2013,20(8):83-85.

[8]吕浩志.基于DWZ、NHibernate和ASP.NET MVC3架构的Web开发应用[J].科技视界,2014,4(5):62-63.LU Hao-zhi.Web development application based on DWZ,NHibernate and ASP.NET MVC3 framework[J].Science&Technology Vision,2014,4(5):62-63.

[9]苏芬平,刘更,王海伟.数据库管理系统持久层的Hibernate解决方案[J].计算机工程与设计,2008,29(12):2991-2997.SU Fen-ping,LIU Geng,WANG Hai-wei.Hibernate solution for DBMS persistence layer[J].Computer Engineering and Design,2008,29(12):2991-2993.

猜你喜欢

主键小类电源
基于Go 实现的分布式主键系统研究
单座物流车专利布局分析
汽车智能驾驶领域专利布局分析
基于外键的E-R图绘制方法研究
Cool Invention炫酷发明
浙江配电网物资标准化研究与应用
哪一款移动电源充电更多?更快?
阳光电源
数据库主键设置探讨
新电源