教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

Hibernate_映射配置文件详解

来源:网络收集 时间:2026-08-26
导读: 映射文件详解 Prepared by TongGang 目标 学习Hibernate的配置文件 (hibernate.cfg.xml) 学习Hibernate的映射声明(*.hbm.xml) Prepared by TongGang Hibernate配置文件 Hibernate配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性 每个 Hibe

映射文件详解

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字,全部文档内容请下载后查看。喜欢就下载吧 ……

Hibernate_映射配置文件详解.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1810827.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)