Hibernate的基本标签和映射

hibernate基本映射标签和属性

1.<hibernate-mapping>标签

<hibernate-mapping  



         schema="schemaName"                          (1)  




         catalog="catalogName"                        (2)  




         default-cascade="cascade_style"              (3)  




         default-access="field|property|ClassName"    (4)  




         default-lazy="true|false"                    (5)  




         auto-import="true|false"                     (6)  




         package="package.name"                       (7)  



 /> 

(1) schema (可选): 数据库schema的名称。

(2) catalog (可选): 数据库catalog的名称。

(3) default-cascade (可选 - 默认为 none): 默认的级联风格。

(4) default-access (可选 - 默认为 property): Hibernate用来访问所有属性的策略。可以通过实现PropertyAccessor接口 自定义。

(5) default-lazy (可选 - 默认为 true): 指定了未明确注明lazy属性的Java属性和集合类, Hibernate会采取什么样的默认加载风格。

(6) auto-import (可选 - 默认为 true): 指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)。

(7) package (可选): 指定一个包前缀,如果在映射文档中没有指定全限定的类名, 就使用这个作为包名。 假若有两个持久化类,它们的非全限定名是一样的(就是两个类的名字一样,所在的包不一样),应该设置auto-import="false".如果把一个“import”的名字对应两个类,Hibernate会出一个异常hibernate-mapping元素允许嵌套多个<class>映射,但最好的做法是一个持久化类对应一个映射文件,并以持久化的超类名称命名。如:Xxx.hbm.xml

2.<class>标签

<class 



        name="ClassName"                              (1)  




        table="tableName"                             (2)  




        dynamic-update="true|false"                   (3)  




        dynamic-insert="true|false"                   (4)  




        optimistic-lock="none|version|dirty|all"      (5)  




        lazy="true|false"                             (6)  



/> 

(1)name(可选):持久化类(或者接口)的Java全限定名。如果这个属性不存在,Hibernate将假定这是一个非POJO的实体映射

(2)table(可选-默认是类的非全限定名):对应数据库表名,生成DDL时数据表名,如果省略,则名称同持久化类名称

(3)dynamic-update(可选,默认为false):指定用于UPDATE的SQL将会在运行时动态生成,只更新那些被改过的字段

(4)dynamic-insert(可选,默认为false):指定用于insert的sql将会在运行时动态生成,并且只包含那些非空字段

(5) optimistic-lock(乐观锁定) (可选,默认是version): 决定乐观锁定的策略。

(6) lazy (可选): 通过设置lazy="false", 所有的延迟加载(Lazy fetching)功能将被全部禁用(disabled)。

3.<id>标签

<id>标签必须配置在<class>标签的第一个位置。由一个字段构成主键,<id>元素定义了该属性到数据库表主键字段的映射

<id name="propertyName"         (1)  



    type="typename"             (2)  




    column="column_name">        (3)  




    length="length">             (4)  




     <generator class="generatorClass" />  



</id> 

(1)name:实体类的属性名字

(2)type:标识Hibernate类型的名字(省略则使用Hibernate默认类型),也可以自己配置类型(integer,long,short,float,double,character,byte,boolean,yes_no,true_false)

(3)column(可选-默认为属性名):主键字段的名字(省略则取name为字段名)

(4)length(可选):当type为varchar时,设置字段长度

<generator>元素(主键生成策略)

主键生成策略必须配置,用来为该持久化类的实例生成唯一的标识。

uuid:

用一个128-bit的UUID算法生成字符串类型的标识符,这在一个网络中是唯一的(使用了IP地址),UUID被编码为一个32位16进制数字的字符串,它的生成是由Hibernate生成,一般不会重复UUID包含:IP地址,JVM的启动时间,系统时间和一个计算器值。

native:

根据底层数据库的能力选择identity,sequence或者hilo中的一个(数据库自增)

assigned:

让程序在save()之前为对象分配一个表示符。这是<generator>元素没有指定时的默认生成策略。(如果是手动分配,则需要设置此配置)

5.<property>标签

用于映射普通属性到表字段

<property  



     name="propertyName" 




     column="column_name" 




     type="typename" 




     length="" 




     unique="" 




     not-null="" 



 >  


</property> 

注:如果实体类和实体类中的属性和SQL中的关键字重复,必须采用table或column重新命名

6.Hibernate完整映射实例:

相关推荐