Hibernate夜未眠(中)

Hibernate夜未眠(中)

   我的
   H...
   ibernate拾锦...

11、formula属性
    property元素中的formula属性用于指定一个SQL表达式,可调用SQL函数货包括子查询。
    <property name = "totalPrice" formula = "(select sum(o.price) from ORDERS o where o.CUSTUMER_ID = '1222')"/>
    当查询CUSTOMER对象时,执行语句:select ID,NAME,(select SUM(O.PRICE) from ORDERS o where o.CUSTOMER_ID = '1222') from CUSTOMERS;
12、dynamic-insert和dynamic-update
    应用中把class中dynamic-insert和dynamic-update值设为true可以提高效率,即插入时仅包含字段取值不为null的字段,更新时仅包含字段值发生变化的属性。
13、Hibernate中package属性
    package属性用于指定本映射文件中包含类的包名为全局包,从而不必为每个类指定完整包名。
14、OID
    Hibernate中用对象标识符OID来维持java对象和表中记录的对应关系,OID定义为整数类型(short、int、long),通常由Hibernate或通过底层数据库给OID赋值。
15、标识符生成器
    Hibernate中内置标识符生成器,均适合代理主键
    increment:由Hibernate自增生成
    identity:由底层数据库生成
    sequence:底层数据库序列生成
    hilo:根据high/low等算法生成以特定表字段作high值
    native:自动选择identity、dequence、hilo
    assgned:自然主键(尽量避免使用)
16、inverse属性
    为避免Hibernate在清理缓存时对相关联对象都执行更新操作,将inverse设置为true,将主控权交给many一方,以仅控mamy方状态更新对象。
17、cascade属性
    级联属性,当cascade属性设置为delete,在删除一对象时自动删除与其级联的对象,删除后持久化对象变为临时状态。
18、session清理缓存时间点
    a、commit()时先清理缓存,再向DATABASE提交事务
    b、执行find()和iterate()时,确保对象最新状态(iterate()在Hibernate 3#已取消)
    c、显式调用flush()方法时
19、持久化对象三状态
    a、临时状态,刚new,不处于session缓存中
    b、持久化状态,已持久化并加入session中
    c、游离状态,被持久化,但不在session中
20、load()和get()
    两者都可以由OID加载一个持久化对象,当DB中不存在与OID对应记录时,load()方法会抛出异常,而get()会返回Null值。
    待续...
 (转载请注明出处)


 
凤凰涅槃/浴火重生/马不停蹄/只争朝夕
     隐姓埋名/低调华丽/简单生活/完美人生

你可能感兴趣的:(Hibernate夜未眠(中))