hibernate映射文件

hibernate映射文件

ID:14325356

大小:41.00 KB

页数:10页

时间:2018-07-27

上传者:U-4188
hibernate映射文件_第1页
hibernate映射文件_第2页
hibernate映射文件_第3页
hibernate映射文件_第4页
hibernate映射文件_第5页
资源描述:

《hibernate映射文件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

Hibernate映射文件一.Hibernate映射文件的作用:Hibernate映射文件是Hibernate与数据库进行持久化的桥梁二.Hibernate映射文件的格式1.Hibernate映射文件基本内容:Hibernate映射文件是*.hbm.xml的xml文件,所以该文件必须遵循xml规则,即必须有头文件和DTD规范2.Hibernate映射文件主要内容:(1).映射内容的定义:Hibernate映射文件由节点定义映射内容并指定所对应的JavaBean的位置(也可以不在该节点中用package属性指定对应的JavaBean位置,而在该节点下的class节点中的name属性中指定)(2).数据库和JavaBean的关联:Hibernate映射文件中用节点下的节点指定数据库表和JavaBean的关联(3).主键映射:在节点下用节点映射对应的主键,该节点必须有且只有一个(因为主键只有一个),同时必须放在节点前(4).主键映射方式:在节点下用节点指定Hibernate向数据库插入数据时主键的生成方式①.assigned:由外部程序负责生成(在session.save()之前为对象的主键设置值),无需Hibernate参与②.native:Hibernate根据数据库自动判断选择identity/hilo/sequence中的一种作为主键生成方式(跨数据库时使用)注:使用Oracle数据库时Hibernate默认会去查找Oracle中的hibernate_sequence序列,如果Oracle中没有该序列,连接Oracle数据库时会报错③.identity:采用数据库提供的主键生成机制,为long/short/int型列生成唯一标识(如:DB2、SQLServer、MySQL、Sybase、HypersonicSQL中的主键生成机制)④.sequence:采用数据库提供的sequence机制生成主键,用于用序列方式产生主键的数据库(如:Oracle、DB2等的Sequence),用于为long/short/int型列生成唯一标识,如:序列名⑤.increment:Hibernate按递增方式设定主键(先获取当前记录主键的最大值后再将该值加1作为主键),用于为long/short/int型列生成唯一标识(没有其它进程向同一表中插入数据时用,在集群下不宜使用)⑥.hilo:通过hi/lo算法生成主键,需要额外的数据库表保存主键生成历史状态(给定一个表和字段(默认分别是hibernate_unique_key和next_hi)作为高位值得来源),用于为long/short/int型列生成唯一标识(该方法生成的标识符只在一个特定的数据库中是唯一的,在使用JTA获得的连接或者用户自行提供的连接中,不要使用这种生成器)先建hi_value表,再建next_value列(必须要有初始值),如:high_valnextval5⑦.seqhilo:类似hilo,通过hi/lo算法生成主键(适用于支持Sequence的数据库,如Oracle)⑧.foreign:使用外部表的字段作为主键,和联合使用,如:⑨.uuid.hex:由Hibernate基于128位唯一值产生算法生成16进制数值(编码后以长度32的字符串表示)作为主键⑩.uuid.string:类似uuid.hex,使用同样的uuid算法,只是生成的主键未进行编码(长度16)注:Oracle数据库一般使用increment自动增长或者sequence序列(5).普通字段映射:在节点下用节点映射普通字段,该节点可有多个(一个字段用一个该节点来映射)三.Hibernate映射文件各节点的属性和子节点1.hibernate-mapping节点的属性(1).package:指定当前映射文件对应的持久类的完整包名(如:package="entity.dao")(2).schema:指定当前映射文件对应的数据库表的schema名(3).catalog:指定当前映射文件对应的数据库表的catalog名(4).default-cascade:设置默认的级联方式(默认值为none)(5).default-access:设置默认的属性访问方式(默认值为property)(6).default-lazy:设置对没有指定延迟加载的映射类和集合设定为延迟加载(默认值为true) (7).auto-import:设置当前映射文件中是否可以在HQL中使用非完整的类名(默认值为true)2.hibernate-mapping节点的字节点(1).class:为当前映射文件指定对应的持久类名和对应的数据库表名(2).subclass:指定多态持久化操作时当前映射文件对应的持久类的子类(3).meta:设置类或属性的元数据属性(4).typedef:设置新的Hibernate数据类型(5).joined-subclass:指定当前联结的子类(6).union-subclass:指定当前联结子的类(7).query:定义一个HQL查询(8).sql-query:定义一个SQL查询(9).filter-def:指定过滤器3.class节点的属性(1).name:为当前映射文件指定对应的持久类名(2).table:为当前映射文件指定对应的数据库表名(3).schema:设置当前指定的持久类对应的数据库表的schema名(4).catalog:设置当前指定的持久类对应的数据库表的catalog名(5).lazy:设置是否使用延迟加载(6).batch-size:设置批量操作记录的数目(默认值为1)(7).check:指定一个SQL语句用于Schema前的条件检查(8).where:指定一个附加的SQL语句的where条件(9).rowid:指定是否支持ROWID(10).entity-name:实体名称默认值为类名(11).subselect:将不可变的只读实体映射到数据库的子查询中(12).dynamic-update:指定用于update的SQL语句是否动态生成默认值为false (13).dynamic-insert:指定用于insert的SQL语句是否动态生成默认值为false(14).insert-before-update:设定在Hibernate执行update之前是否通过select语句来确定对象是否确实被修改了,如果该对象的值没有改变,update语句将不会被执行(默认值为false)(15).abstract:用于在联合子类中标识抽象的超类(默认值为false)(16).emutable:表明该类的实例是否是可变的默认值为fals(17).proxy:指定延迟加载代理类(18).polymorphism:指定使用多态查询的方式默认值为implicit(19).persister:指定一个Persister类(20).discriminator-value:子类识别标识默认值为类名(21).optimistic-lock:指定乐观锁定的策略默认值为vesion4.class节点的字节点(1).id:定义当前映射文件对应的持久类的主键属性和数据表中主键字段的相关信息(2).property:定义当前映射文件对应的持久类的属性和数据表中字段的相关信息(3).sql-insert:使用定制的SQL语句执行insert操作(4).sql-delete:使用定制的SQL语句执行delete操作(5).sql-update:使用定制的SQL语句执行update操作(6).subselect:定义一个子查询(7).comment:定义表的注释(8).composite-id:持久类与数据库表对应的联合主键(9).many-to-one:定义对象间的多对一的关联关系(10).one-to-one:定义对象间的一对一的关联关系(11).any:定义any映射类型(12).map:map类型的集合映射(13).set:set类型的集合映射(14).list:list类型的集合映射 (15).array:array类型的集合映射(16).bag:bag类型的集合映射(17).primitive-array:primitive-array类型的集合映射(18).query:定义装载实体的HQL语句(19).sql-query:定义装载实体的SQL语句(20).synchronize:定义持久化类所需要的同步资源(21).query-list:映射由查询返回的集合(22).natural-id:声明一个唯一的业务主键(23).join:将一个类的属性映射到多张表中(24).sub-class:声明多态映射中的子类(25).joined-subclass:生命多态映射中的来连接子类(26).union-subclass:声明多态映射中的联合子类(27).loader:定义持久化对象的加载器(28).filter:定义Hibernate使用的过滤器(29).component:定义组件映射(30).dynamic-component:定义动态组件映射(31).properties:定义一个包含多个属性的逻辑分组(32).cache:定义缓存的策略(33).discriminator:定义一个鉴别器(34).meta:设置类或属性的元数据属性(35).timestamp:指定表中包含时间戳的数据(36).vesion:指定表所包含的附带版本信息的数据3.id节点的属性(1).name:指定当前映射对应的持久类的主键名(2).column:指定当前映射对应的数据库表中的主键名(默认值为对应持久类的主键/属性名)(3).type:指定当前映射对应的数据库表中的主键的数据类型(4).unsaved-value:判断此对象是否进行了保存(5).daccess:Hibernate访问主键属性的策略(默认值为property)4.id节点的子节点 generator:设置Hibernate插入数据时为持久类主键值的生成方式5.generator节点的属性:(1).class:指定主键生成器(2).name:指定当前映射对应的持久类的主键名(3).column:指定当前映射对应的数据库表中的主键名(默认值为对应持久类中的主键名)(4).type:指定当前映射对应的数据库中主键的数据类型(5).unique:设置该字段的值是否唯一(默认值为false)(6).not-null:设置该字段的值是否可以为null(默认值为false)(7).update:设置update操作时是否包含本字段的数据(默认值为true)(8).insert:设置insert操作时是否包含本字段的数据(默认值为true)(9).formula:设置查询操作时该属性的值用指定的SQL来计算(10).access:Hibernate访问这个属性的策略(默认值为property)(11).lazy:设置该字段是否采用延迟加载策略(默认值为false)(12).optimistic-lock:指定此属性做更新操作时是否需要乐观锁定(默认值为true)6.property节点的属性:(1).formula:设置当前节点对应的持久类中的属性的值由指定的SQL从数据库获取注:指定的SQL必须用()括起来,指定SQL中使用列时必须用表的别名加.加列名的方式访问,但如果指定SQL中要使用当前映射对应的列时不能用表的别名加.加列名的方式访问,而是直接访问即可如:formula="(selecttn.columnNamefromtableNametnwheretn.columnName=当前映射中的属性名)"(2).unique:设置该字段的值是否唯一(默认值为false)(3).not-null:设置该字段的值是否可以为null(默认值为false)(4).not-found: 设置当当前节点对应的数据库字段为外键时引用的数据不存在时如何让处理(默认值为exception:产生异常,可选值为ignore:对不存在的应用关联到null)(5).property-ref:设置关联类的属性名,此属性和本类的关联相对应默认值为关联类的主键(6).entity-name:被关联类的实体名(7).lazy:指定是否采用延迟加载及加载策略(默认值为proxy:通过代理进行关联,可选值为true:此对象采用延迟加载并在变量第一次被访问时抓取、false:此关联对象不采用延迟加载)(8).access:Hibernate访问这个属性的策略(默认值为property)(9).optimistic-lock:指定此属性做更新操作时是否需要乐观锁定(默认值为true)7.one-to-one节点的属性(1).name:映射类属性的名字(2).class:关联类的名字(3).formula:绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示(4).cascade:设置级联操作时的级联类型(5).constrained:表明当前类对应的表与被关联的表之间是否存在着外键约束默认值为false(6).fetch:设置抓取数据的策略可选值为join外连接抓取、select序列选择抓取(7).property-ref:设置关联类的属性名,此属性和本类的主键相对应默认值为关联类的主键(8).access:Hibernate访问这个属性的策略(默认值为property)(9).lazy:指定是否采用延迟加载及加载策略默认值为proxy通过代理进行关联可选值为true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载(10).entity-name:被关联类的实体名8.many-to-one元素(1).name:映射类属性的名字 (2).class:关联类的名字(3).formula:绝大多数一对一关联都指向其实体的主键。在某些情况下会指向一个或多个字段或是一个表达式,此时可用一个SQL公式来表示(4).column:中间关联表映射到目标关联表的关联字段(5).cascade:设置级联操作时的级联类型(6).fetch:设置抓取数据的策略默认值为select序列选择抓取可选值为join外连接抓取(7).lazy:指定是否采用延迟加载及加载策略默认值为proxy通过代理进行关联可选值为true此对象采用延迟加载并在变量第一次被访问时抓取、false此关联对象不采用延迟加载(8).update:进行update操作时是否包含此字段(9).insert:进行insert操作时是否包含此字段(10).not-found:指定外键引用的数据不存在时如何让处理默认值为exception产生异常可选值为ignore对不存在的应用关联到null9.many-to-many元素10.set元素(1).name:映射类属性的名字(2).table:关联的目标数据库表(3).schema:目标数据库表的schema名字(4).catalog:目标数据库表的catalog名字(5).subselect:定义一个子查询(6).sort:设置排序的类型默认值为unsorted不排序可选值为natural自然排序、comparatorClass实现接口类作为排序算法避免与order-by同时使用(7).lazy:是否采用延迟加载(8).inverse:用于标识双向关联中被动的一方默认值为false(9).cascade:设置级联操作时的级联类型(10).mutable:标识被关联对象是否可以改变默认值为true(11).order-by:设置排序规则 (12).where:增加筛选条件(13).batch-size:延迟加载时,一次读取数据的数量默认值为1(14).fetch:设置抓取数据的策略可选值为join外连接抓取、select序列选择抓取11.list元素12.map元素四.Hibernate映射文件内容实例:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭