一卡通系统中持久层的设计与其实现

计算机应用软件发展到现在由单层体系结构发展为多层体系结构,而三层结构是目前典型的一种应用软件结构.它包括表述层:提供与用户的交互界面;业务逻辑层:实现多个业务逻辑;数据库层:负责存放和管理应用的持久性业务数据.而hibernate是连接java应用程序的关系数据库的中间件J,在分层软件架构中它位于持久层,封装了所有数据访问细节,使业务逻辑层可以专注于业务逻辑。


    计算机应用软件发展到现在由单层体系结构发展为多层体系结构,而三层结构是目前典型的一种应用软件结构.它包括表述层:提供与用户的交互界面;业务逻辑层:实现多个业务逻辑;数据库层:负责存放和管理应用的持久性业务数据.而hibernate是连接java应用程序的关系数据库的中间件J,在分层软件架构中它位于持久层,封装了所有数据访问细节,使业务逻辑层可以专注于业务逻辑。 

    1一卡通系统持久层的设计

    一卡通系统是基于J2EE(Java2EnterpriseE-dition建立在Java2平台上的企业级应用的解决方案)标准的分布式多层次的体系结构,后台应用java语言开发服务器端应用程序,前台采用Delphi开发客户端应用程序,应用具有海量存储的大型Oracle数据库,采用开源的Jboss应用服务器进行逻辑处理。它借助校园网络传输数据,进行科学合理建设,实现各校区、各类商务收费、各种身份识别的一卡通行。 

    1.1持久层总体架构

    图1展示了一卡通系统数据库持久层的总体设计架构。 


一卡通系统中持久层的设计与其实现



    图1一卡通系统数据库持久层的总体设计架构

    在图1中,将应用层放在了持久层的上部,实际上在传统的项目中,应用层充当着持久层的一个客户端角色。持久层的接口大致可以分为以下几种类型:

    (1)一些被用户的应用程序调用的,用来完成基本的创建、读取、更新、删除操作以及查询操作的接口。这些接口是持久层实现用户程序的商业逻辑的主要接口,包括Session、Transaction和Query。

    (2)持久层用来读取诸如映射表这类配置文件的接口,典型的有Configuration类。

    1.2持久层详细设计

    (1)对象持久化类

    ClassPersister接口封装了把一个对象实例持久化到数据库中的所有逻辑,ClassPersister类非常简单,它的三个属性isProxy、isPersistent和timeStamp分别指示一个类对象是否是一个代理、是否是从持久机制获取的以及由持久机制记录的最后一次被应用程序访问的时间。代理对象只包括系统和用户标识一个对象所需的最少信息,因为它们比完整的对象小,所以可以减少网络流量,当需要真正的对象的时候,发送给代理load消息,可以刷新对象的所有属性,属性isPersistent的重要性在于一个对象需要知道它已经存在于持久机制中还是新创建的,这将决定在保存对象时生成insert还是update语句.timeStamp属性被用于支持持久机制中的乐观锁。ClassPersister实现了多个方法:如load、delete等,它们是可以将对象持久化的。也就是说,应用程序开发者不需要知道任何关于持久策略的知识就可以将对象持久化,只需要向对象发送这些消息,而对象自己完成其它的事情。 

    (2)持久化集合对象类

    尽管ClassPersister封装了使单个对象持久化的行为,但是还不够,因为常常需要操作多个持久对象,CollectionPersister类层次就支持这种操作,它支持一次保存、获取、删除多个对象,CollectionPersister是一个抽象类,它捕获子类的公共行为但是不会直接被实例化,这个类允许定义用以限定对象范围的选择条件。 

    (3)事务接口类

    Transaction接口类的实例是通过Transaction-Factory的beginTransacti0n方法获得,通过JDBC-Transaction类实现了transaction接口的各个方法。事务的典型生命周期是:被创建,添加一系列操作任务,接受begin消息,然后或者提交事务、或者回滚事务、或者重试。只能在begin方法返回成功后,才能提交事务。否则要么回滚,要么当持久机制上的锁已经移除后,重试事务,提交和回滚事务的能力是非常重要的,因为事务是原子的,或者成功或者失败,只能将所有任务完全回滚或者完成所有任务后完全提交。 

    (4)缓存机制

    缓存可以使应用程序避免为相同的数据项进行多次数据库读操作,如果应用程序需要读取一个持久化类的实例,但是并不打算修改它们,可以使用read―only缓存,这是最简单,也是实用性最好的策略,应用程序需要更新数据,可能read―write 缓存比较合适。 

    Session缓存,不管何时当传递一个对象给save,update或者saveOrUpdate,或者使用load,find,iterate或者filter取得一个对象的时候,该对象被加入到Session的内部缓存中。当后继的flush被调用时,对象的状态会和数据库进行同步.如果在处理大量对象并且需要有效的管理内存的时候,可能不希望发生这种同步,evict方法可以从缓存中去掉对象和它的集合,在SessionFactory中定义了一些方法来从缓存中清除一个实例、整个类、集合实例或者整个集合。 

    (5)持久管理器类

    Session起着持久管理器的功能,它由Session―Facrory生成,在运行时刻Session维护到持久机制(关系数据库)的连接并管理持久机制的交互.Session实际上是在Connection、Query、Criteria和Transaction之间扮演了一个协调者,因为它是这些类的实例提交自己并被处理的地方,Session借助SessionFactorylmplementor和Sessi0nImplement0r与SQL生成器类层次,映射类层次和持久化机制类层次进行交互。 

    启动应用程序时,开始要做的事情之一就是让Session将创建映射类(ClassMap,AttributeMap)实例所需要的信息从持久机制读进来,Session会在内存中缓冲这些映射类,以便在映射对象到持久机制的时候使用它们,Session的save、delete和load方法,将调用ClassPersister的相应方法来实现对象的持久化管理,如果已知某个持久化实例的标识符,Session的load方法可取出它,一种形式使用一个类对象作为参数,会把状态装载到另一个新创建的对象中去.另一种是给出一个实例,会在其中装载状态。 

    1.3持久层的应用实现

    在一卡通系统中,所有的业务对象,如用户对象、帐户对象、报表对象、权限对象、角色对象、日志对象等,都由持久层持久化服务将其映射至数据库中相关的表,这些对象之间的关系表,如一对一、一对多、多对多等也由持久层映射中的onetoone、manytoone、collection的manytomany、onetomany等元素映射在持久化对象中。

    1.3.1持久层配置

    持久层的配置使用xml(eXtensibleMarkupLanguage扩展性标识语言)进行配置,配置文件命名为hibernate.cfg.xm1.我们主要配置数据库连接的各种参数和根据项目的进展逐步添加涉及的映射文件,以供持久层管理事务、产生SQL和管理JDBC连接等。

    1.3.2数据表的设计

    数据库设计主要是对各个业务对象设计相应的表和它们之间的关系表,同一般的数据库设计一样,一卡通系统包括学校基本信息表、食堂营业部门表、帐户表、卡表、卡类型表、消费数据表及操作日志表等等,多数表之问存在关系,如帐户和卡之问存在一对多的关系、卡类型和卡之问存在一对多的关系等。 

    1.3.3实体Bean(EntityBean)的编写

    将一卡通系统中所有需要持久化的类以标准JavaBean的形式编写,对每一个属性值都要有public的getXXX和setXXX,命名符合bean方法的命名规则。 

    1.3.4映射(Mapping)文件的编写

    Mapping文件写得正确与否关系着持久层的持久化服务能否正常运行;写得是否合适对整个解决方案的性能也有很大的影响。在这里,需要注意的就是各种关系的映射,映射文件的放置位置要和配置文件hibernate.cfg.xml中指明的位置保持一致。 

    1.3.5持久化对象操作

    先用Configuration方法调用properties文件进行系统环境的初始化配置,并且利用addClass分别调用映射资源文件(object.xm1)和映射类文件(object.class)。调用configuration.getproperties,检查所使用的数据库,检查表的关联性,一对多等关系的设置,检查外键约束性等.使用数据库的JDBC的驱动连接数据库,查看所用数据库连接池,同时检验JNDI等的配置情况。 

    2程序的执行

    显示结果,启动应用服务器jboss进行系统的初始化,实现持久层与Oracle数据库的连接.如图2在eclipse(java开发环境)的控制台中的运行结果。 


一卡通系统中持久层的设计与其实现


    图2eclipseIDE下程序的jboss启动服务的初始化运行结果

    3结束语

    利用持久层的对象持久化服务,可以有效地进行数据库数据到业务对象的O/R映射,简化了客户端对数据库的操作过程,并且在项目后期维护、程序修改以及更换数据库

一卡通系统中持久层的设计与其实现

该文观点仅代表作者,本站仅提供信息存储空间服务,转载请注明出处。若需了解详细的安防行业方案,或有其它建议反馈,欢迎联系我们

(0)
小安小安

相关推荐

  • 同方锐安出入控制全线产品及解决方案闪耀2012安博会

    近年来,同方锐安在出入控制领域发展日新月异,产品不断推陈出新。此次展会上,公司最新发布的6200M门禁读卡器、新款人行通道、磐石门禁控制器、多版本一卡通产品,以全新的面孔给参展观众带来不一样的精彩体验。

    2025年11月28日
  • 神州数码AMPON(安朋)解决方案以超强兼容称霸

    在高清主题被广泛关注的当下,加之平安城市等大型项目的建设,品牌不兼容、产品及系统不开放成为阻碍行业高清化、网络化发展的棘手问题。目前有些领先的安防企业已意识到这一点,如行业高端品牌神州数码AMPON(安朋)。作为视频监控高清化、IP化的推动者,神州数码AMPON(安朋)始终坚持开放融合的心态,率先在业内提出了融合理念,能够为用户提供具有兼容开放的全线安防产品和整体解决方案,成功实现了模拟/IP视频监控、报警、门禁一卡通、智能分析、手机视频、数据集成等多项业务的大融合,掀开了安防行业融合发展的序幕,大大提升了整个安防行业的发展高度和前进步伐。

    2025年11月27日
  • 捷顺科技智能安防解决方案受垂青

    作为出入口控制及智能安防解决方案领头羊企业,捷顺科技是第二次参加杭州国际社会公共安全产业博览会。秉承展示公司先进理念、执著精神以及世界领先的操作平台的目的,这次展会捷顺展出了公司最新的CPU一卡通解决方案、平安校园解决方案、平安社区解决方案、G3一卡通系统管理等。这些个性化的定制式智能安防解决方案,是捷顺公司多年市场经验积累与技术沉淀的结果,是充分斟酌了行业特点、功能要求、技术水平,现场许多参观嘉宾流露出了对捷顺智能安防解决方案的青睐。

    2025年11月27日 资讯
  • 第十五届城市智慧卡发展年会盛大开幕 77城互联互通

    12月3日,第十五届城市智慧卡发展年会在江苏省无锡市隆重开幕,城市智慧卡发展年会是城市一卡通行业的年度盛会,来自全国近200个城市一卡通运营机构的代表、业内专家以及智能卡产业链百余家企业代表参加了此次大会。

    2025年11月27日 资讯
  • 两部委介绍交通智能化实施方案近期和远期目标

    从远期看,逐步形成旅客出行与公务商务、购物消费、休闲娱乐相互渗透的“交通移动空间”;实现交通信息充分开放共享,高效配置交通运输资源;逐步构建覆盖更加广泛、体系更加健全、功能更加现代、感受更加便捷的智能交通体系,实现先进技术装备自主开发和规模化应用,交通运输服务效率、资源配置效率以及交通治理能力全面提升。

    2025年11月27日
  • Aisino航天信息发布RFID一卡通系统方案

    在信息产业技术日异革新、网络应用迅猛发展的今天,智能卡技术已被各行各业所接受并应用。为了满足市场需求,国内著名的IT企业航天信息股份有限公司于近期推出了全新的RFID一卡通系统解决方案。

    2025年11月26日