我的
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值。
待续...
(转载请注明出处)
凤凰涅槃/浴火重生/马不停蹄/只争朝夕
隐姓埋名/低调华丽/简单生活/完美人生