hibernate总结

文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
        " http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping package="eg">
        <class name="Cat" table="CATS" discriminator-value="C">
                <id name="id" column="uid" type="long">
                        <generator class="hilo"/>
                </id>
                <discriminator column="subclass" type="character"/>
                <property name="birthdate" type="date"/>
                <property name="color" not-null="true"/>
                <property name="sex" not-null="true" update="false"/>
                <property name="weight"/>
                <many-to-one name="mate" column="mate_id"/>
                <set name="kittens">
                        <key column="mother_id"/>
                        <one-to-many class="Cat"/>
                </set>
                <subclass name="DomesticCat" discriminator-value="D">
                        <property name="name" type="string"/>
                </subclass>
        </class>
        <class name="Dog">
                <!-- mapping for Dog could go here -->
        </class>
</hibernate-mapping>
1,
<hibernate-mapping
         schema="schemaName"                         
         default-cascade="none|save-update"          
         auto-import="true|false"                    
         package="package.name"                      
 />
schema (可选): 数据库 schema名称。
 
 default-cascade (可选 - 默认为 none): 默认的级联风格。
 
 auto-import (可选 - 默认为 true): 指定是否我们可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。
 
 package (可选): 指定一个包前缀,如果在映射文档中没有指定全限定名,就使用这个包名。
 
2,
<class
        name="ClassName"                             
        table="tableName"                            
        discriminator-value="discriminator_value"    
        mutable="true|false"                         
        schema="owner"                               
        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"                            
/>
 name: 持久化类(或者 接口 )的Java全限定名。
 
 table: 对应的数据库表名。
 
 discriminator-value(辨别值) (可选 - 默认和类名一样):一个用于区分不同的子类的值,在多态行为时使用。
 
 mutable(可变) (可选, 默认值为 true): 表明该类的实例可变(不可变)。
 
 schema (可选): 覆盖在根<hibernate-mapping>元素中指定的schema名字。
 
 proxy (可选): 指定一个接口,在延迟装载时作为代理使用。你可以在这里使用该类自己的名字。
 
 dynamic-update(动态更新) (可选,默认为false): 指定用于UPDATE 的SQL将会在运行时动态生成,并且只更新那些改变过的字段。
 
 dynamic-insert(动态插入) (可选, 默认为false): 指定用于INSERT的 SQL 将会在运行时动态生成,并且只包含那些非空值字段。
 
 select-before-update (可选,默认值为false): 指定Hibernate除非确定对象的确被修改了,不会执行SQL UPDATE操作。在特定场合(实际上,只会发生在一个临时对象关联到一个新的session中去,执行update()的时候),这说明Hibernate会在UPDATE之前执行一次额外的SQL SELECT操作,来决定是否应该进行UPDATE。
 
 polymorphism(多形,多态) (可选, 默认值为 implicit (隐式)): 界定是隐式还是显式的使用查询多态。
 
 where (可选) 指定一个附加的SQLWHERE 条件,在抓取这个类的对象时会一直增加这个条件。
 persister (可选): 指定一个定制的ClassPersister。
 batch-size (可选,默认是1) 指定一个用于根据 标识 符抓取实例时使用的"batch size"(批次抓取数量)。
 optimistic-lock(乐观锁定) (可选,默认是version): 决定乐观锁定的 策略
 lazy(延迟) (可选): 假若设置 lazy="true",就是设置这个类自己的名字作为proxy接口的一种等价快捷形式。
 
3,
<id
        name="propertyName"                     
        type="typename"                         
        column="column_name"                    
        unsaved-value="any|none|null|id_value"  
        access="field|property|ClassName">      
        <generator class="generatorClass"/>
</id>
 name (可选): 标识属性的名字。
 
 type (可选): 标识Hibernate类型的名字。
 
 column (可选 - 默认为属性名): 主键字段的名字。
 
 unsaved-value (可选 - 默认为null): 一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。这可以把这种实例和从以前的session中装载过(可能又做过修改--译者注)但未再次持久化的实例区分开来。
 
 access (可选 - 默认为property): Hibernate用来访问属性值的策略。
 
4,composite-id 联合ID
<composite-id
        name="propertyName"
        class="ClassName"
        unsaved-value="any|none">
        <key-property name="propertyName" type="typename" column="column_name"/>
        <key-many-to-one name="propertyName" class="ClassName" column="column_name"/>
        ......
</composite-id>
5,
<discriminator
        column="discriminator_column" 
        type="discriminator_type"     
        force="true|false"            
/>
 column (可选 - 默认为 class) 识别器字段的名字
 
 type (可选 - 默认为 string) 一个Hibernate字段类型的名字
 
 force(强制) (可选 - 默认为 false) "强制"Hibernate指定允许的识别器值,就算取得的所有实例都是根类的。
 
6,
<version
        column="version_column"  
        name="propertyName"      
        type="typename"          
        access="field|property|ClassName"                 
        unsaved-value="null|negative|undefined"           
/>
 column (可选 - 默认为属性名): 指定持有版本号的字段名。
 
 name: 持久化类的属性名。
 
 type (可选 - 默认是 integer): 版本号的类型。
 
 access (可选 - 默认是 property): Hibernate用于访问属性值的策略。
 
 unsaved-value (可选 - 默认是undefined): 用于标明某个实例时刚刚被实例化的(尚未保存)版本属性值,依靠这个值就可以把这种情况和已经在先前的session中保存或装载的实例区分开来。(undefined指明使用标识属性值进行这种判断。)
版本号必须是以下类型:long, integer, short, timestamp或者calendar。
7,
<timestamp
        column="timestamp_column"     
        name="propertyName"           
        access="field|property|ClassName"  
        unsaved-value="null|undefined"     
/>
 column (可选 - 默认为属性名): 持有时间戳的字段名。
 
 name: 在持久化类中的JavaBeans风格的属性名,其Java类型是 Date 或者 Timestamp的。
 
 access (可选 - 默认是 property): Hibernate用于访问属性值的策略。
 
 unsaved-value (可选 - 默认是null): 用于标明某个实例时刚刚被实例化的(尚未保存)版本属性值,依靠这个值就可以把这种情况和已经在先前的session中保存或装载的实例区分开来。(undefined指明使用标识属性值进行这种判断。)
 
注意,<timestamp> 和<version type="timestamp">是等价的。
8,
<property
        name="propertyName"                
        column="column_name"               
        type="typename"                    
        update="true|false"                
        insert="true|false"                
        formula="arbitrary SQL expression" 
        access="field|property|ClassName"  
/>
 name: 属性的名字,以小写字母开头。
 
 column (可选 - 默认为属性名字): 对应的数据库字段名。
 
 type (可选): 一个Hibernate类型的名字。
 
 update, insert (可选 - 默认为 true) :表明在用于UPDATE 和/或 INSERT的SQL语句中是否包含这个字段。这二者如果都设置为false则表明这是一个“外源性(derived)”的属性,它的值来源于映射到同一个(或多个)字段的某些其他属性,或者通过一个trigger(触发器),或者其他程序。
 
 formula (可选): 一个SQL表达式,定义了这个计算(computed) 属性的值。计算属性没有和它对应的数据库字段。
 
 access (可选 - 默认值为 property): Hibernate用来访问属性值的策略。
 
9,
<many-to-one
        name="propertyName"                     
        column="column_name"                    
        class="ClassName"                       
        cascade="all|none|save-update|delete"   
        outer-join="true|false|auto"            
        update="true|false"                     
        insert="true|false"                     
        property-ref="propertyNameFromAssociatedClass"    
        access="field|property|ClassName"                 
/>
 name: 属性名。
 
 column (可选): 字段名。
 
 class (可选 - 默认是通过反射得到属性类型): 关联的类的名字。
 
 cascade(级联) (可选): 指明哪些操作会从父对象级联到关联的对象。
 
 outer-join(外连接) (可选 - 默认为 自动): 当设置hibernate.use_outer_join的时候,对这个关联允许外连接抓取。
 
 update, insert (可选 - defaults to true) 指定对应的字段是否在用于UPDATE 和/或 INSERT的SQL语句中包含。如果二者都是false,则这是一个纯粹的“外源性(derived)”关联,它的值是通过映射到同一个(或多个)字段的某些其他属性得到的,或者通过trigger(除法器),或者是其他程序。
 
 property-ref: (可选) 指定关联类的一个属性,这个属性将会和本外键相对应。如果没有指定,会使用对方关联类的主键。
 
 access (可选 - 默认是 property): Hibernate用来访问属性的策略。
 
10,
<one-to-one
        name="propertyName"                     
        class="ClassName"                       
        cascade="all|none|save-update|delete"   
        constrained="true|false"                
        outer-join="true|false|auto"            
        property-ref="propertyNameFromAssociatedClass"    
        access="field|property|ClassName"                 
       
/>
 name: 属性的名字。
 
 class (可选 - 默认是通过反射得到的属性类型):被关联的类的名字。
 
 cascade(级联) (可选) 表明操作是否从父对象级联到被关联的对象。
 
 constrained(约束) (可选) 表明该类对应的表对应的数据库表,和被关联的对象所对应的数据库表之间,通过一个外键引用对主键进行约束。这个选项影响save()和delete()在级联执行时的先后顺序(也在schema export tool中被使用)。
 
 outer-join(外连接) (可选 - 默认为 自动): 当设置hibernate.use_outer_join的时候,对这个关联允许外连接抓取。
 
 property-ref: (可选) 指定关联类的一个属性,这个属性将会和本外键相对应。如果没有指定,会使用对方关联类的主键。
 
 access (可选 - 默认是 property): Hibernate用来访问属性的策略。
 
11,
<component
        name="propertyName"                
        class="className"                  
        insert="true|false"                
        upate="true|false"                 
        access="field|property|ClassName"> 
       
        <property ...../>
        <many-to-one .... />
        ........
</component>
 name: 属性名
 
 class (可选 - 默认为通过反射得到的属性类型):组件(子)类的名字。
 
 insert: 被映射的字段是否出现在SQL的INSERT语句中?
 
 update: 被映射的字段是否出现在SQL的UPDATE语句中?
 
 access (可选 - 默认是 property): Hibernate用来访问属性的策略。
 
12,
<subclass
        name="ClassName"                             
        discriminator-value="discriminator_value"    
        proxy="ProxyInterface"                       
        lazy="true|false"                            
        dynamic-update="true|false"
        dynamic-insert="true|false">
        <property .... />
        .....
</subclass>
 name: 子类的全限定名。
 
 discriminator-value(辨别标志) (可选 - 默认为类名):一个用于区分每个独立的子类的值。
 
 proxy(代理) (可选): 指定一个类或者接口,在延迟装载时作为代理使用。
 
 lazy(延迟装载) (可选): 设置lazy="true"是把自己的名字作为proxy接口的一种等价快捷方式。
 
13,
<joined-subclass
        name="ClassName"         
        proxy="ProxyInterface"   
        lazy="true|false"                  
        dynamic-update="true|false"
        dynamic-insert="true|false">
        <key .... >
        <property .... />
        .....
</subclass>
 name: 子类的全限定名。
 
 proxy (可选): 指定一个类或者接口,在延迟装载时作为代理使用。
 
 lazy(延迟装载) (可选): 设置lazy="true"是把自己的名字作为proxy接口的一种等价快捷方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值