(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 持久层的应用实现
在一卡通系统中,所有的业务对象,如用户对象、帐户对象、报表对象、权限对象、角色对象、日志对象等,都由持久层持久化服务将其映射至数据库中相关的表,这些对象之间的关系表,如一对一、一对多、多对多等也由持久层映射中的one to one、many to one、collection的many to many、one to many等元素映射在持久化对象中.
1.3.1 持久层配置
持久层的配置使用xml(eXtensible Markup Language扩展性标识语言)进行配置.配置文件命名为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开发环境)的控制台中的运行结果.
图2 eclipse IDE下程序的jboss启动服务的初始化运行结果
3 结束语
利用持久层的对象持久化服务 ,可以有效地进行数据库数据到业务对象的O/R映射,简化了客户端对数据库的操作过程.并且在项目后期维护、程序修改以及更换数据库方面提供了便利;有利于节约开发成本和时间,提高业务应用性能,使其具有更灵活的业务逻辑.
作者简介:
周化峰(1979-),男,辽宁丹东人,沈阳理工大学信息科学与工程学院 硕士研究生
参考文献:
[1]孙卫琴.精通Hibernate:java对象持久化技术详解[M].电子工业出版社,2005
[2]刘洋.精通Hibomate[M].北京:电子工业出版社,2004.
[3]夏听,曹晓钢,唐勇.深入浅出Hibomate[M].北京:电子工业出版社,2005.
[4]汤娜,叶小平.数据库理论及应用基础[M].北京:清华大学出版社,2004.
[5]宋汉增,沈林.利用Hibernate对象持久化服务简化Java数据库访问[J].计算机应用,2003,23(12):l_3.