Hibernate_映射配置文件详解
映射文件详解
Prepared by TongGang
目标 学习Hibernate的配置文件 (hibernate.cfg.xml) 学习Hibernate的映射声明(*.hbm.xml)
Prepared by TongGang
Hibernate配置文件 Hibernate配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性 每个 Hibernate 配置文件对应一个 Configuration 对象。 Hibernate配置文件可以有两种格式:–hibernate.properties –hibernate.cfg.xml
Prepared by TongGang
hibernate.cfg.xml的常用属性 connection.url:数据库URL http://doc.guandang.netername:数据库用户名 connection.password:数据库用户密码 connection.driver_class:数据库JDBC驱动 show_sql:是否将运行期生成的SQL输出到日志以供调试。取 值 true | false dialect:配置数据库的方言,根据底层的数据库不同产生不 同的sql语句,Hibernate 会针对数据库的特性在访问时进行 优化。 hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据 库模式。取值 create | update | create-drop mapping resource:映射文件配置,配置文件名必须包含其相 对于根的全路径 connection.datasource :JNDI数据源的名称
Prepared by TongGang
jdbc.fetch_size 和 jdbc.batch_size jdbc.fetch_size:实质是调用 Statement.setFetchSize() 方法设定JDBC 的Statement读取数据的时候每次从数据库中取出的记录条数。例如一次查 询1万条记录,对于Oracle的JDBC驱动来说,是不会 1 次性把1万条取出来 的,而只会取出Fetch Size条数,当纪录集遍历完了这些记录以后,再去 数据库取Fetch Size条数据。因此大大节省了无谓的内存消耗。当然Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch Size越小,读数 据库的次数越多,速度越慢。Oracle数据库的JDBC驱动默认的Fetch Size=10,是一个保守的设定,根据测试,当Fetch Size=50的时候,性能 会提升1倍之多,当Fetch Size=100,性能还能继续提升20%,Fetch Size 继续增大,性能提升的就不显著了。建议使用Oracle时将Fetch Size设到 50。并不是所有的数据库都支持Fetch Size特性,例如MySQL就不支持。 MySQL就像上面那种最坏的情况,总是一下就把1万条记录完全取出来,内 存消耗会非常非常惊人!这个情况就没有什么好办法了 hibernate.jdbc.batch_size:设定对数据库进行批量删除,批量更新和批 量插入的时候的批次大小,有点相当于设置Buffer缓冲区大小的意思。 Batch Size越大,批量操作的向数据库发送sql的次数越少,速度就越快。 测试结果是当Batch Size=0的时候,使用Hibernate对Oracle数据库删除1 万条记录需要25秒,Batch Size = 50的时候,删除仅仅需要5秒!可见有 多么大的性能提升!Oracle数据库 Batch Size = 30 的时候比较合适。 这两个选项非常重要
,将严重影响Hibernate的 CRUD(create,read,update,delete)性能!Prepared by TongGang
配置 c3p0数据库连接池 c3p0连接池是Hibernate推荐使用的连接池,若需要使用该连 接池时,需要将c3p0的jar包拷贝到 WEB-INF 的 lib 目录下
Prepared by TongGang
POJO 类和数据库的映射文件 *.hbm.xml POJO 类和关系数据库之间的映射可以用一个XML文档 (XML document)来定义。映射按照POJO的定义来创建, 而非表的定义。 通过 POJO 类的数据库映射文件,Hibernate可以理 解持久化类和数据表之间的对应关系,也可以理解持 久化类属性与数据库表列之间的对应关系
Prepared by TongGang
映 射 文 件 示 例
Prepared by TongGang
映射文件说明 hibernate-mapping–类层次:Class 主键。id 基本类型:property 自定义类:many-to-one | one-to-one 集合:set | list | map | array–one-to-many –many-to-many
子类:subclass | joined-subclass 其它:component | any等
–查询语句:query(用来放置查询语句,便于对数据库查询 的统一管理和优化)
注意:一个Hibernate-mapping中可以同时定义多个类。Prepared by TongGang
hibernate-mapping<hibernate-mapping schema="schemaName" catalog="catalogName" default-cascade="cascade_style" default-access="field|property|ClassName" default-lazy="true|false" auto-import="true|false" package="http://doc.guandang.net" />
hibernate-mapping 是 hibernate 映射文件的根元素 schema (可选): 数据库schema的名称。 catalog (可选): 数据库catalog的名称。 default-cascade (可选 - 默认为 none): 默认的级联风格。 default-access (可选 - 默认为 property): Hibernate用来访问属性的 策略。可以通过实现PropertyAccessor接口自定义。 default-lazy (可选 - 默认为 true): 指定了未明确注明lazy属性的 Java属性和集合类, Hibernate会采取什么样的默认加载风格。 auto-import (可选 - 默认为 true): 指定我们是否可以在查询语言中使 用非全限定的类名(仅限于本映射文件中的类)。 package (可选): 指定一个包前缀,如果在映射文档中没有指定全限定的 类名, 就使用这个作为包名。 Prepared by TongGang
<class name="ClassName" table="tableName" discriminator-value="discriminator_value" mutable="true|false" schema="owner" catalog="catalog" proxy="ProxyInterface" dynamic-update="true|false" dynamic-insert="true|false" select-before-update="true|false" polymorphism="implicit|explicit" where="arbitrary sql where condition" persister="PersisterClass" batch-size="N" optimistic-lock="none|version|dirty|all" lazy="true|false" entity-name="EntityName" check="arbitrary sql check condition" rowid="rowid" subselect="SQL expression" abstract="true|false" node="element-name" />
class
Class:定义一个持久化类 name (可选): 持久化类(或者接 口)的类名 t
able (可选 - 默认是类的非全限 定名): 对应的数据库表名 discriminator-value (可选 - 默 认和类名一样): 一个用于区分不 同的子类的值,在多态行为时使用。 它可以接受的值包括 null 和 not null。Prepared by TongGang
主键-id<id name="propertyName" type="typename" column="column_name" unsaved-value="null|any|none|undefined|id_value" access="field|property|ClassName" node="element-name|@attribute- name|element/@attribute|."> <generator class="generatorClass"/> </id>
Id:被映射的类必须定义对应数据库表主键字段。大多数类有一个 JavaBean风格的属性, 为每一个实例包含唯一的标识。<id> 元素定义 了该属性到数据库表主键字段的映射。 name (可选): 标识持久化类属性的名字。 type (可 …… 此处隐藏:3291字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




