hibernate学习笔记二

来源:互联网 发布:数据粒度怎么计算 编辑:程序博客网 时间:2024/05/06 13:41
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">





原创粉丝点击