hibernate基本映射标签和属性
<hibernatemapping>标签
() schema (可选) 数据库schema的名称
() catalog (可选) 数据库catalog的名称
() defaultcascade (可选 默认为 none) 默认的级联风格
() defaultaccess (可选 默认为 property) Hibernate用来访问所有属性的策略可以通过实现PropertyAccessor接口 自定义
() defaultlazy (可选 默认为 true) 指定了未明确注明lazy属性的Java属性和集合类 Hibernate会采取什么样的默认加载风格
() autoimport (可选 默认为 true) 指定我们是否可以在查询语言中使用非全限定的类名(仅限于本映射文件中的类)
() package (可选) 指定一个包前缀如果在映射文档中没有指定全限定的类名 就使用这个作为包名 假若有两个持久化类它们的非全限定名是一样的(就是两个类的名字一样所在的包不一样)应该设置autoimport=false如果把一个import的名字对应两个类Hibernate会抛出一个异常hibernatemapping元素允许嵌套多个<class>映射但最好的做法是一个持久化类对应一个映射文件并以持久化的超类名称命名如Xxxhbmxml
<class>标签
()name(可选)持久化类(或者接口)的Java全限定名如果这个属性不存在Hibernate将假定这是一个非POJO的实体映射
()table(可选默认是类的非全限定名)对应数据库表名生成DDL时数据表名如果省略则名称同持久化类名称
()dynamicupdate(可选默认为false)指定用于UPDATE的SQL将会在运行时动态生成只更新那些被改过的字段
()dynamicinsert(可选默认为false)指定用于insert的sql将会在运行时动态生成并且只包含那些非空字段
() optimisticlock(乐观锁定) (可选默认是version) 决定乐观锁定的策略
() lazy (可选) 通过设置lazy=false 所有的延迟加载(Lazy fetching)功能将被全部禁用(disabled)
<id>标签
<id>标签必须配置在<class>标签的第一个位置由一个字段构成主键<id>元素定义了该属性到数据库表主键字段的映射
()name:实体类的属性名字
()type:标识Hibernate类型的名字(省略则使用Hibernate默认类型)也可以自己配置类型(integerlongshortfloatdoublecharacterbytebooleanyes_notrue_false)
()column(可选默认为属性名)主键字段的名字(省略则取name为字段名)
()length(可选)当type为varchar时设置字段长度
<generator>元素(主键生成策略)
主键生成策略必须配置用来为该持久化类的实例生成唯一的标识
uuid:
用一个bit的UUID算法生成字符串类型的标识符这在一个网络中是唯一的(使用了IP地址)UUID被编码为一个位进制数字的字符串它的生成是由Hibernate生成一般不会重复UUID包含IP地址JVM的启动时间系统时间和一个计算器值
native:
根据底层数据库的能力选择identitysequence或者hilo中的一个(数据库自增)
assigned:
让程序在save()之前为对象分配一个表示符这是<generator>元素没有指定时的默认生成策略(如果是手动分配则需要设置此配置)
<property>标签
用于映射普通属性到表字段
注如果实体类和实体类中的属性和SQL中的关键字重复必须采用table或column重新命名
Hibernate完整映射实例