hibernate数据持久化组件
Hibernate中一种自定义持久化机制的设计与实现

( . P d ct nC n r f aca gU i r t, ag i aca g 30 7P C; 1 M A E uai et nhn nv syJ nx nhn 0 R o eoN ei i N 3 4
维普资讯
第2 5卷
第1 期
江
西
科 学 V0 . 源自 No 1 12 . 20 0 7年 2月
JANG S ENC I XI CI E
Fb20 e.07
文章 编 号 :0 1 6 9 2 0 ) 1— 0 4— 4 10 —37 ( 0 7 0 0 5 0
中 图分 类 号 :P 1 .3 . T 3 112 3 文献标识码 : A
De i n a d Ap l a in o S r fS l - f e e sse n Hi e n t sg n p i to fA o to ef—De n d P r it r i b r a e c i
0 引 言
Hbrae ie t是一 个 面 向 Jv n aa环境 的对 象/ 系 关
架。
目前 Hbra ie t n e已经 成为 JE 2 E平 台上 最流行
的对象关系映射框架 , 支持绝大多数关系数据库 持久化映射 , 但对 目前流行 的其 它数据存储格式 如 H sMa、 A P等 , 仅 提 供 了为第 三 方 软件 ah p L D 仅
2 C mp trC ne n h n ie i Ja g i n h n 3 0 9 P . o ue e tro Na c a gUnvr t in x c a g3 0 2 RC; f s y, Na 3 Co ue p r n fNa c a gUn ie i ,in x n h n 3 0 9 P C; . mp trDe at t n h n vv r t Ja g iNa c a g3 0 2 R me o sy
基于Hibernate与Struts的鱼雷库数据持久化研究

计算机科学 20 Vo. 5 o 5 0 8 13 N .
基 于 Hien t b r ae与 Sr t 鱼 雷 库 数 据 持 久 化 研 究 ) tus的
曾孝文 侯楚 林
( 湖南理 工学院 计算机 与信 息工 程系 岳 阳 44 0) ( 10 0 海军 工程大 学兵器 工程 系 武 汉 40 3 ) 3 03。
进行 了详 述 。
关键 词
ห้องสมุดไป่ตู้
关 系映射框 架,Srt, 雷, t s鱼 u 对象/ 系映射 , 象持久化 关 对
Da a Pe ss e c sar h o t r it n eRe e c fTor e t r nf r to a ge ntS s e Ba e n Hi r t nd S r t p do S o e I o ma i n M na me y t m s o be na e a t u s d
关系映射 ) 工具 , 能够建立面向对象的域模型和关系模 型的映 射l 。其原理 是应 用 程序 通 过 Hi rae对 数 据库 进 行 访 1 ] b nt e 问, 对数据持久层操作 , Hien t 而 b rae自身 通过 po et s rp ri 配 e
() 3 库房管理模块 : 提供库房编号 、 负责人 等信 息; () 4 装备管理模块 : 提供导弹 、 测试仪器 、 元器 件 、 火工品 、 消耗 品的型号、 数量 、 相关责任人等信息 ; ( )出入库 管理 模块 : 5 提供 人员 和物 资的出入库 管理 登
tc n lg fc mbn t n o h m.Fial ,wih t emes rn n tu n fti y tm o x mpe x ait h e h oo yo o iai fte o nl y t h a u ig isr me to hss se f re a l,e p t e t e a
突发事件应急管理调度平台的设计

突发事件应急管理调度平台的设计余鹏;罗惠平;李艳;杨木清【摘要】In order to improve the responding velocity and commanding efficiency in the Held of enterprise,government and universities , a managing and scheduling emergency incident platform, which is based on Spring framework and Hibernate data persistence framework for system design, was given. The platform can effectively manage and completely monitor the progress of emergency of different government,areas and types. Based on hotspot map,the system can show the currently important faults on the image of electronic map,as well as dynamically monitoring the progresses of resource scheduling in time with electronic map and satellite map. The experiment is probed that the platform can accurately show the changes of the data of emergency. Meanwhile, it is proved that the platform can improve the scheduling efficiency of emergency management.%为提高企业、政府机构、高校等应对突发事件的反应速度和指挥效率,设计并实现了基于Spring框架和Hibernate数据持久化框架的突发事件应急管理调度平台.该平台完成了对不同机构、不同区域、不同类型的突发事件应急过程的全面管理和统一监控;通过热点地图的形式,实现对电子维运管理调度平台上报的重要应急数据在电子地图上的统呈现;通过电子地图、卫星地图等直观的方式实现对应急资源调度过程的动态监控.实验证明,平台能够准确地呈现实时应急调度数据的变化,可提高突发事件的应急管理调度效率.【期刊名称】《武汉理工大学学报(信息与管理工程版)》【年(卷),期】2011(033)004【总页数】5页(P560-564)【关键词】Spring框架;Hibernate数据持久化框架;应急管理调度平台;热点地图;动态监控【作者】余鹏;罗惠平;李艳;杨木清【作者单位】中南民族大学网络技术中心,湖北武汉430074;中南民族大学网络技术中心,湖北武汉430074;中南民族大学网络技术中心,湖北武汉430074;中南民族大学网络技术中心,湖北武汉430074【正文语种】中文【中图分类】TP311.52突发事件对社会造成的影响越来越严重。
利用Hibernate对象持久化服务简化Java数据库访问之我见

从 繁琐 的编程 工作 中解放 出来 。 H i b e r n a t e 负责从 J a v a 数据 类 H i b e r n a t e 负责数据库 与J a v a 对 象 问的映射。 在 对H i b e r n a t e
效、易用 的O / R 映射 框架 , 使得持 久层 的开发 得 到了极大 的简 推厂 因为H i b e r n a t e  ̄J D B C 进行了轻 量级封装 , 实现了用户可
化。
绕过 H i b e r n a t e 直接对J D B C A P I 进行访 问。 H i b e r n a t e 自身的 T r a n s a c t i o n 实质 上就是底层J D B C T r a n s a c t i o n 的封装 , 这就
型 向S Q L 数据 类型 的映射, 提 供对 象数据 的检索与 查询 , 降低 框 架 进行应 用时 , 首先 , 应 该编 写其配 置 文化 ; 其次, 根 据配 了手动处 理J D B C 及S Q L 上花 费的时间。 对载 入类 的过程有 效的 置文 焕生成映射文件, 然后完成数据库 与J a v a 对 象问的映射, 进行 了简化, 降低了利用H O L 从数据库提 取数据的编码量 , 节约 生成 持久化对 象 ; 最后 , 编写业务逻 辑类 , 实现 业务逻 辑 。 对 了开发成本与时间。 通过该技术 的使用, 还能够对传统的D A O 、 H i b e r n a t e 框 架在对象持久化 中的应用用 以下案例进行 说明。
基于hibernate的ORM持久化操作

基 于hb rae ien t的OR M持久 化操 作
保 定学院数 学与计 算机 系 吉雪芸 保 定市职教 中心 申忠华
【 摘要 】hb rae ien t 框架 用于提供一种 持久化 的对 象一 系映射模型解决 方案 ,为 此,本文在h e t框架的基础 上对几种关 联映射进行 了研 究 ,提 出了一种基 于 关 i ma b e M e t关联映射模 型,并将其应用 到 了 息系统的开发 中,取得 了通用性效果 。 bma e 【 关键词 】h e a ;持 久化层 ;O M模型 ;信息系统开发 ir t b ne R
ub1 ass b1e ny mp1 men 对象 关系 映射 (b e t R l t oa p ic c1 Ta Ma i e ts O j c ea in l aa i .e il zb e M p i g R )是 将 j v 对 象 的状 态 映 j v . o S r a i a l ( a p n ,O M aa 射到数据库 上 ,即将j a l M n 0 { u lcT be ay
关心对象 。 ) 四 、H b r a e e n t 的关联映射 / m nm l o src o / i i a c n t u t r H b r ae i e n t 的核心任 务是根 据 映射 文件 中配置信 息建立实 体对 象与关系数 p b T b e a y( n e e u 1c a 1M n I t g r i 据库 二维表 之间 的映射 。H b r a e i e n t 首 p ieM n) { rK y ay 先 由S s i n a t r 将一个普通 的jv esoF coy aa ti ti s.pri KeyMany 对象 ( O O P J )转换成 持久化类 ,再通 过 O M 数据 库表 和类 的对象 之 间建立 映 p i e M n : R在 r K y a y 射 ,通过J B ,J D 等数据库接 口访 问 DC N I
浅析Java对象持久化:Hibernate的几种关系映射与配置

t pe y பைடு நூலகம்
/ /Hi e a e Hi e ae C n i u a b m t / b m t o fg r
nam e= ” s r pt on” de c i i cl o umn:” e crp i n” d s i to t e ”t i yp = s rng” />
to i n DTD 3 0 / . / EN” ” tp: / i e n t s ur e o g . e / h t / h b r a e.o c f r e n t
开 发 人 在 企 业 应 用 和 关 系 数 据 库 之 问 的 首 持 久 化 , 如 何 合 理 的 进 行 J a对 象 与 关 系 v a 数据 库 之 间 的 关 系映 射 是 关键 所 在 。
</i d>
<pr ope t nam e ” ry = name”
n m = a e ” n a m e ”
Q et n u si o col m n 一 ”n u a m e” t e = ’t i yp ’ rng” /> s
< P P ro e rt Y
P K i d q e to u s n i
0 缸 nS 0 0
hi e n t c fg r to b r a e on i u a i n~3. dt > 0. d”
<hi r a e o i r ton> e b n t c nfg a i u <s s i n a t r n e s o f c o y ame mys ” =” ql > <pr p r y a e-” i l c ” o e t n m - d a e t >
持久化 中间件 ,自2 0 0 5年荣获第 1 Jl 5届 ot 大奖 , 已成为 众多的 J v a a开 发人 员开发企
使用hibernate实现数据持久化

J D B C上 的开 发时 间 。 2持 久化和 OR M
< ? x ml v e  ̄i o n =” 1 . 0 ” ? > < ! DOCTYP E h i b e ma t e - ma p p i n g P UBL I C
”
一
H i b e r n a t e 是一个优秀的J a v a 持久化层解决方案 , 是当今主流的对 ” h t t p . ' / / hi be ma t e . s o u r c e f o r g e . n e t / hi be na r t e - ma p p i n g 一3 . 0 . d t d ” > 象——关系映射( O b i e c R e l a t i o n M a p p i n g , 简称 O R M) 工具。程序在运 < h i b e na r t e — ma p p i n g p a c k a g e = ” c o m . s h o p . h i b e na r t e ” > 1 1 实体 类 的包名 c l a s s n a m e = I  ̄ Us e r ”t a b l e = " n s e r ” > 1 1 前u s e r 为实体类名 ,后 u s e r 为生成的数据 行的时候 , 产生的数据保存在内存中, 当程序退出时, 数据随之消失, 我 < 表 名 们称这些数据的状态时瞬时的;有些数据在程序退出后 以文件的形式 < i d n a me =” i d” c o l u mn =” u s e ri d ”l e n g t h = ” 3 2 ” > / / i d对用 的数 据表字段 为 U S — 保存在存储设备中, 我们称这些数据的状态时持久的。 持久化就是将程 i d , 长度 为 3 2 序中的数据在瞬时状态和持久状态之间进行转换的机制 。程序员在编 < g e n e r a t o r e l s8 a = “ d > 写程序 的时候 , 以面向对象的方式处理数据 , 数据在存储的时候 , 却以 r o p e t r y n a m e = ” u s e ma m e ”u n i q u e = ” t r u e ”n o t — n u l l = ” t ue r ”l e n g t h = ” 2 0 ” / > / / 用 关 系型数 据 库的方 式存 储 ,所 以 ,需 要 一种 机制 能在 两者 之 间进行 转 <p 户名唯一, 不允许为空, 长度 2 O 换, O R M就担当了这个角色 , O R M使用映射把对象和数据库 中的表产 < p r o p e t r y n a m e - ” p ss a w o r d ' n o t — n u l l = ” t ue r ”l e n g t h = ” 1 0 ” / > / / 密码 不允 许为 空 生对应关系, 使程序自动的把对象持久化到数据库中。 < / c l ss a >
基于Struts+Hibernate+Spring的系统设计和开发

基于Struts+Hibernate+Spring的系统设计和开发俞国红(健雄职业技术学院计算机工程系,江苏太仓215411)摘要:阐述了以J2EE(JSP、JavaBean、Servlet)、SSH(Struts、Spring、Hibernate)开源框架为核心技术,逐步构建软件架构原型,构建系统原型作为系统开发的基础,提出了基于Struts、Spring和Hibernate框架的轻型J2EE 软件架构技术的系统设计和开发方法。
关键词:J2EE;Struts;Spring;Hibernate;架构中图分类号:TP311.52文献标识码:A1 前言J2EE(Java 2 Enterprise Edition即Java 2 平台企业版)是由Sun公司主持推出的一项中间件技术。
EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。
但由于EJB的复杂性,导致程序的开发效率低。
在Spring和Hibernate 等轻量级框架出现后,大量的开发人员转向到以目前最流行的开源框架,能快速开发出结构清晰、可重用性好、维护方便的轻量级的J2EE企业系统应用。
2 Web应用的分层分析构架Web企业系统应用时需要考虑用户交互、处理业务逻辑、应用数据持久化、扩展性等很多问题,所以一个应用的架构方案和实现技术选择十分重要。
而分层的目的就是对应用的逻辑功能进行划分,使每层在完成自己功能的同时,不影响其它层,实现“高内聚,低耦合”具有易于控制、扩展、维护的优点,图1是一个典型的轻量级J2EE应用架构,Web 应用分层结构基本上都分为三层:表现层、业务逻辑层、数据持久层。
表示层用来处理用户和软件之间的交互,它主要的责任是向用户展现信息以及处理用户请求。
业务逻辑层,又叫做领域逻辑层。
其职责包括处理业图1 典型的Web应用分层结构Fig.1 Typical Web application hierarchical structure务逻辑和存储业务数据,校验从表示层传过来的数据,通过表示层提交的命令来执行相应的业务逻辑。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hibernate数据持久化组件1.基本概念:1)对象持久化:把数据保存在永久的存储介质中(数据库)。
2)ORM(object relation mapping)对象关系映射。
3)POJO(PlainOldJavaObject)类是标准的Java Bean。
PO持久化对象用于插入数据时候所使用POJO对象,BO业务对象,VO值对象4)Hibernate就是一个可以自动的根据xml完成对象关系映射,并持久化到数据库的开源组件,底层也是由JDBC实现的。
通过xml文件的配置,对数据库的底层的方言,以及数据库连接所需的信息,以及连接数据库的驱动。
5)hibernate的系统配置文件的名字一般叫做hibernate.cfg.xml,一般是映射类名.hbm.xml。
一般将映射类的xml文件和实体类放在一起。
a)对象映射元文件: hibernate的映射类的XXXX.hbm.xml的写法(XXX一般跟所对应的POJO类的类名相同)<hibernate-mapping package="XXX.XXX.XXX"> package:映射类所在的包,注意:包中间用"."隔开<class name="Xxxxxx" table="Xxxxx">将类和数据库的表联系起来<id name="studentId属性名称" column="studentId对应的主键列名称">声明标识属性,这个属性在PO中是必须的,所以一般创建对应表时必须定义主键,否则hibernate会将所有的列识别为一个复合主键<generator class="assigned"/>用于定义主键生成策略, assigned指定主键生成策略为用户指定,identity用于指定主键采用底层数据库提供的自增长</id><property name="XXX属性名称" column="XXXX对应的列名称"type="string具体的数据类型,可以使用java数据类型进行指定,也可以使用hibernate 中提供的数据类型进行指定,也可以不指定由系统自动识别"/>类中的属性和字段之间建立联系<property name="brithday" column="brithday" type="date"/>在hibernate中其他类型可以自动识别只有Date类型必须指定,因为这里需要决定对应的时间精度问题</class></hibernate-mapping>b)核心配置文件hibernate.cfg.xml中会设置数据库的连接信息,以及引用的其他文件的文件名,和一些其他的设置。
这个文件一般放在项目的根目录下。
<hibernate-configuration><session-factory><!--这两个运行时常量在开发测试阶段需要设置,如果部署到产品环境中必须设置为false或者直接删除--><property name="show_sql">true</property>显示sql语句<property name="format_sql">true</property>使显示的sql语句格式化<property name="dialect">....</property>使用的数据库方言信息,hibernate依靠方言设置用于区别不同的数据库管理系统,从而生成对应数据库平台的SQL语句<!--使用的数据库的驱动--><property name="connection.driver_class">....</property><property name="connection.url">....</property><property name="ername">...</property><property name="connection.password">...</property> <!--引入的映射对象的xml文件的全路径及文件名,注意:包名之间用"/"隔开--> <mapping resource="xxx/xxxx/xxxxx.hbm.xml"/></session-factory></hibernate-configuration>2、使用hibernate编程步骤1)配置环境,加载hibernate的jar文件,以及连接数据库连接使用的jar文件,并配置CLASSPATH环境变量。
2)写POJO类(普通的java类)3)写hibernate所需的配置文件,hibernate.cfg.xml ,Xxxxx.hbm.xml4)调用hibernate API。
a)使用Configuration对象的buildSessionFactory()方法创建SessionFactory对象。
b)使用SessionFactory对象openSession()方法创建Session对象。
c)使用Session的相应方法来操作数据库,将对象信息持久化到数据库。
3.主键的选择:选择列数最少的候选键充当主键。
一般的主键有2种类型:自然主键和代理主键。
Hibernate推荐使用代理主键<generator>子元素指定对象标识符生成器,他负责为OID生成唯一标识符。
Hibernate 的内置标示符生成器(id生成器):a)increment:由Hibernate以递增的方式为代理主键赋值。
Hibernate在初始化阶段读取表中最大主键值,然后再最大值的基础上递增,增量为1。
<id name="id" column="id" type="long"><generator class="increment"/></id>适用范围:1>increament不依赖于底层数据库系统,所以适于所有的DBS。
2>适用于只有单个Hibernate应用程序访问同一个DB的场合。
3>ID必须为long、int或short类型,定义为byte类型在运行时会抛异常。
b)identity:由底层DB来负责生成,要求底层DB把主键定义为自增类型,例如在SQL Server中,应该把主键定义为identity类型,MySQL中,定义为auto_increment类型。
MySQL: id bigint primary key auto_increment,SQLServer: id int primary key identity(1,1)<id name="id" column="id"><generator class="identity"/></id>适用范围:1>由于identity生成机制依赖于底层DB系统,要求底层DB必须支持自增字段类型。
例如Oracle中不支持这种自增长方式,则不能使用2>ID必须为long、int或short类型,定义为byte类型在运行时会抛异常。
c)sequence利用底层DB提供的序列生成。
例如在Oracle中可以使用序列对象生成连续增长值create sequence seq1 start with 1 maxvalue 999999999999999999;<id name="id" column="id"><generator class="sequence"><param name="sequence">sql1</param>这是在数据库中的序列对象名</generator></id>适用范围:1>sequence依赖于底层DB,要求底层DB系统必须支持序列,例如Oracle、DB2等支持,但是在MySQL和SQLServer中不支持2>OID必须为long、int或short类型,定义为byte类型在运行时会抛异常。
d)hilo高低位算法:由Hibernate按照一种high/low算法来生成标识符,Hibernate从DB的特定表的字段中获取high值,hibernate自行维护了一个连续值充当低位值。
<id name="id" column="id"><generator class="hilo"><param name="table">tt_hilo</param>设置高位值取值的表<param name="column">hi</param>设置高位值取值的字段<param name="max_lo">50</param>指定低位最大值,当取道最大值时会再取一个高位值再运算</generator></id>适用范围:1〉hilo不依赖于底层DB系统,适用于所有的DBS。
但是需要额外表的支持2〉OID必须为long、int或short类型,定义为byte类型,在运行时会抛异常。
3〉hign/low算法生成的标识符只能在一个DB中保证唯一。
4〉当用户为Hibernate自行提供DB连接,或者Hibernate通过JTA,从应用服务器的数据源获得数据库连接时无法使用hilo,因为这不能保证hilo在新的DB连接的事务中访问hi值所在的表,这时如果DBS支持Sequence,可以使用seqhilo来产生ID,seqhilo从名为hi_sequence的序列里获取high值。