您的位置:首页 > 其它

hibernate学习笔记二

2012-09-07 09:23 162 查看
1:Hibernate中持久化类的访问者有两个

2:基本数据类型和包装类型区别:

基本数据类型和包装类型对应的hibernate映射类型相同。

基本类型可直接运算、无法表达null、数字类型的默认值为0。

包装类默认值是null。当对于默认值有业务意义的时候需要使用包装类。

3:Hibernate访问持久化类属性的策略

1.propertye 默认值:表明hibernate通过getXXX和

setXXX来访问类属性。推荐使用。提高域模型透明性。

2.field:hibernate通过java反射机制直接访问类属性。对于没有

javabean方法的属性可设置该访问策略。

<property name="name" column="name" type="string"

access="field">

3 noop:它映射Java持久化类中不存在的属性,即主要用于HQL(用query接

口测试,使用hql语句)中,当数据库中有某列,而实体中不存在的情况。

<property name="name" column="name" type="string"

access="noop">

查询时忽略此属性

4:在持久化类的方法中加入程序逻辑

1 在Customer.hbm.xml文件中无需映射firstname和lastname属性,而是映射

name属性。

页面firstname和lastname,数据库name(firstname,lastname)

2 不管在类中是否存在name属性,只要在Customer.hbm.xml文件中映射了

name属性,在hql语句中就能访问他。

如果改成:

<property name=“name” column=“NAME” access=“field”>

后过如何?

运行出错

field [name] not found on cn.itcast.fuhe.Customer

5:设置派生属性

利用<property>元素的formula属性,用来设置一个sql表达式,hibernate将

根据它来计算出派生属性的值。

<property name="totalprice" formula="(select sum(o.price) from

customer o)"/>

6:控制insert、update语句

映射属性 作用

<property>

insert属性 若为false,在insert语句中不包含该字段,该字段永远

不能被插入。默认值true。

<property>

update属性 若为false,update语句不包含该字段,该字段永远不能

被更新。默认值为true。

<class>

mutable属性 若为false,等价于所有的<property>元素的update属性

为false,整个实例不能被更新。默认为true。

<class>

dynamic-insert属性 若为true,等价于所有的<property>元素的insert为

true,保存一个对象时,动态生成insert语句,语句中仅包含取值不为null的字段。

默认false。

<class>(先查询)

dynamic-update属性 若为true,等价于所有的<property>元素的update为

true,更新一个对象时,动态生成update语句,语句中仅包含取值不为null的字段。

默认false。

7:处理sql引用表示符

如果数据库表名或列名包含特殊字符,可以使用引用表示符(键盘~下面的字

符)。

<property name="des" column="`customer des`“type="text"/>

8:设置类的包名

可以设置<hibernate-mapping>元素的package属性,避免为每个类提供完整

的类名。

<hibernate-mapping package="cn.yue.domain">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: