转载自:http://www.cnblogs.com/blackdeng/p/7027296.html
1.持久化对象的配置
1)hibernate-mapping标签配置
根标签,可以包含class子标签
Package 一个映射文件可以包含多个class子标签,如果这些子标签定义的java类都位于同java包下,可以设置package属性,可以避免每个类提供全限定名
2)class标签配置
class :用于配置持久化类与数据表关系的标签,子元素为持久化对象属性与数据库字段的关系映射。
常用属性说明:
mutable:是否可变,true/false,默认true。如设定为false,则无法完成数据修改功能。
dynamic-insert:是否动态插入,true/false,默认false,如设定为true,hibernate在插入数据时,首先检测内存对象(new出的对象在内存中存在),过滤为空的属性,生成的sql语句不包含为空的字段。
dynamic-update:是否动态修改,true/false,默认false,如设定为true,hibernate在更新数据时,指定用于 UPDATE 的 SQL 将会在运行时动态生成,并且只更新那些改变过的字段。
作用:优化sql语句,些微提升sql效率
lazy:是否延迟加载,true/false,默认true。(在hibernate数据检索章节详解)
3)property标签配置
property:用于配置持久化类属性与数据表字段的映射关系标签。
常用属性说明:
name:持久化类的属性名称。
column:数据库表的字段名。
type :字段类型。type包含两种数据类型:
Java数据类型:与持久化类属性类型一致,必须是完整类路径。
hibernate数据类型:hibernate封装了自己的数据类型与java数据类型对应,同时也扩展了部分数据类型。
access:属性访问方式,有三种配置方式,Hibernate访问持久化类属性的策略
property默认值:表明hibernate通过getXXX和setXXX来访问类属性。推荐使用。
field:hibernate通过java反射机制直接访问类属性。对于没有javabean方法的属性可设置该访问策略。(<property name=”name” column=”name” access=”field”>)
noop(了解):它映射Java持久化类中不存在的属性,即主要用于HQL(用query接口测试,使用hql语句)中,当数据库中有某列,而实体中不存在的情况。
formula:用来设置一个sql表达式,hibernate将根据它来计算出派生属性的值。用来设置一个sql表达式,hibernate将根据它来计算出派生属性的值。派生属性:数据库表中不包含此字段,但因为业务逻辑需要,持久化对象需要的额外字段,例如数据库中保存的是日期格式的出生日期,但需要获取的是年龄。
<property name="age" formula="(select months_between(sysdate,birthday)/12 from dual)">
insert:是否可插入,true/false,默认true,如设定为false,hibernate完成插入数据操作时,不处理该字段。
update:是否可修改,true/false,默认true,如设定为false,hibernate完成数据更新操作时,不处理该字段。
lazy:是否延迟加载,true/false,默认true。(后面知识解释)