《Hibernate关系映射及配置属性解释》由会员分享,可在线阅读,更多相关《Hibernate关系映射及配置属性解释(5页珍藏版)》请在金锄头文库上搜索。
1、2010-02-27Hibernate关系映射的配置属性解释文章分类: Java编程 1.属性及其含义hibernate-mapping的属性 auto-import (可选 - 默认为 true): 指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。 package (可选): 指定一个包前缀,如果在映射文档中没有指定全限定的类名, 就使用这个作为包名。 default-lazy=true 设定全局抓取策略,默认延迟抓取class的属性 name (可选): 持久化类(或者接口)的 Java全限定名。 如果这个属性不存在,Hibernate将假定这是一个非 POJO的
2、实体映射。 table (可选 - 默认是类的非全限定名): 对应的数据库表名。 discriminator-value (可选 - 默认和类名一样): 一个用于区分不同的子类的值,在多态行为时使用。它可以接受的值包括 null 和 not null。 dynamic-update (可选, 默认为 false): 指定用于 UPDATE 的 SQL将会在运行时动态生成,并且只更新那些改变过的字段。 /这样做性能可能会用问题 dynamic-insert (可选, 默认为 false): 指定用于 INSERT的 SQL 将会在运行时动态生成,并且只包含那些非空值字段。 batch-size
3、(可选,默认是 1) 指定一个用于 根据标识符(identifier)抓取实例时使用的batch size(批次抓取数量)。 optimistic-lock(乐观锁定) (可选,默认是 version): 决定乐观锁定的策略。 optimistic-lock=none|version|dirty|all lazy (可选): 通过设置 lazy=false, 所有的延迟加载(Lazy fetching)功能将被全部禁用(disabled)。id的属性 name (可选): 标识属性的名字。 column (可选 - 默认为属性名): 主键字段的名字。 type (可选): 标识 Hiberna
4、te类型的名字。 generator的属性 默认为 assigned,比较常用的:native,identity,sequenceassigned 让应用程序在 save()之前为对象分配一个标示符。这是 元素没有指定时的默认生成策略。 native 根据底层数据库的能力选择 identity, sequence 或者 hilo中的一个。increment 用于为 long, short或者 int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。 identity 对 DB2,MySQL, MS SQL Server, Sybase和 Hyperson
5、icSQL的内置标识字段提供支持。 返回的标识符是 long, short 或者 int类型的。 sequence 在 DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在 Interbase中使用生成器(generator)。返回的标识符是long, short或者 int 类型的。 uuid 用一个 128-bit的 UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用了 IP地址)。UUID 被编码为一个 32位 16进制数字的字符串。foreign property的属性 name: 属性的名字,以小写字母开头。
6、 column (可选 - 默认为属性名字): 对应的数据库字段名。 也可以通过嵌套的元素指定。 type (可选): 一个 Hibernate类型的名字。length(可选): 该字段的长度 lazy (可选 - 默认为 false): 指定 指定实例变量第一次被访问时,这个属性是否延迟抓取(fetched lazily)( 需要运行时字节码增强)。 unique (可选): 使用 DDL为该字段添加唯一的约束。 同样,允许它作为property-ref引用的目标。 not-null (可选): 使用 DDL为该字段添加可否为空(nullability)的约束。index(可选): 指定在该
7、字段上建立索引并命名 update, insert (可选 - 默认为 true) : 表明用于 UPDATE 和/或 INSERT 的SQL语句中是否包含这个被映射了的字段。这二者如果都设置为 false 则表明这是一个“外源性(derived)”的属性,它的值来源于映射到同一个(或多个)字段的某些其他属性,或者通过一个 trigger(触发器)或其他程序生成。 表示级连删除更新或创建 cascade=all|none|save-update|delete|all-delete-orphan|delete-orphan 创建的时候如果引用的对象没有创建的话就会创建 更新的时候如果修改引用对象
8、的话,引用的对象本身也会修改 -X-to-X 关联配置属性cascade 表示级联操作时的更新或创建 all|none|save-update|delete|all-delete-orphan|delete-orphanall : 所有情况下均进行关联操作。相对于 save-update and deletenone:所有情况下均不进行关联操作。这是默认值。 save-update:在执行 save/update/saveOrUpdate时进行关联操作。 delete:在执行 delete时进行关联操作。all-delete-orphan 的意思是当对象图中产生孤儿节点时,在数据库中删除该节点
9、 fetch 参数指定了关联对象抓取的方式是 select查询还是 join查询;默认为join查询select方式时先查询返回要查询的主体对象(列表),再根据关联外键id,每一个对象发一个 select查询,获取关联的对象,形成 n+1次查询; join方式,主体对象和关联对象用一句外键关联的 sql同时查询出来,不会形成多次查询。 如果你的关联对象是延迟加载的,它当然不会去查询关联对象。 另外,在 hql查询中配置文件中设置的 join方式是不起作用的(而在所有其他查询方式如 get、criteria 或再关联获取等等都是有效的),会使用select方式,除非你在 hql中指定 join
10、fetch某个关联对象。one-to-one属性constrained 默认为 false,只要一种情况才会设置为 true,就是在 id生成策略是 foreign时set属性 inverse 默认 false,这个属性的引入时为了解决 many-to-many 谁是这面,谁是对立面。inverse=true 将指定该实体为对立面,因此不具用维护关联表的权限,修改这个实体的集合不会对关联表产生影响。这一点非常重要。hibernate映射文件 set 元素属性文章分类: Java编程 set 元素属性:1. name:映射类属性的名字 2. access:Hibernate 访问这个属性的策略
11、默认值为 property 3. table:关联的目标数据库表 4. schema:目标数据库表的 schema名字 5. catalog:目标数据库表的 catalog名字 6. lazy:是否采用延迟加载 7. subselect:定义一个子查询 8. sort:设置排序的类型 默认值为 unsorted 不排序 可选值为 natural自然排序、comparatorClass 实现接口类作为排序算法 避免与 order-by同时使用 9. inverse:用于标识双向关联中被动的一方 默认值为 false 10.mutable:标识被关联对象是否可以改变 默认值为 true 11.cascade:设置操作中的级联策略 可选值为 all 所有操作情况均进行级联、none 所有操作情况均不进行级联、save-update 执行更新操作时级联、delete 执行删除操作时级联、all-delete-orphan 被关联对象失去宿主时将其删除 12.order-by:设置排序规则 13.where:增加筛选条件 14.batch-size:延迟加载时,一次读取数据的数量 默认值为 1 15.fetch:设置抓取数据的策略 可选值为 join 外连接抓取、select 序列选择抓取 eg:说明