又见凌晨时分...
我的
H...
ibernate拾锦...
21、session激发触发器
如果一个session激发一个触发器,由于触发器对session是透明的,一次造成数据不一致。
解决方法:调用session的flush()方法和refresh()使其同步;
由于使用触发器使得在update时候无法比较属性是否发生变化。
解决方法:在class元素中设置select-before-update为true。
22、精粒度对象模型
从一类中抽象出来的单独类,提高代码重用性,被抽象出来的类在映射文件中定义为<component>,无OID,必须依赖父类。
23、session三种检索类型
a、load()跟get()都以OID加载
Customer customer = (Customer)session.load(Customer.class,new Long(1));//同get()方法
b、find()方法通过HQL进行检索(Hibernate 3# 取消该方法)
List customeLists = session.find("from Customer as c where c.id = 1);
24、延迟检索策略(Hibernate 3# 默认为true)
class种lazy为true时设置延迟检索,load方法仅返回代理类实例,在第一次使用才加载该实例所有数据,只对load方法有效。
25、HQL检索方式
List result = session.createQuery("HQL language")
.setString("customerName","improviser")
.setInteger("customerAge",23)
.list();
26、QBC检索方式
QBC由Criteria和Criterion接口、Expression类组成,支持运行时生成查询语句。Expression提供查询静态方法,返回Criterion对象,Criteria的add方法加入Criterion对象,并以list()执行查询,返回查询结果。
27、QBE检索方式
先创建一个对象模板,再检索所与该模板相同对象,Example创建一个Criterion对象,把Example对象中不为null的属性作为查询条件,QBE只支持"="和"like"比较。
28、分页查询
query.setFirstResult(0);//从第一页开始检索
query.setMaxResults(10);//最多检出10条记录
29、字符配匹模式
字符串通配符为"%"和"_",中文字应为"%%"配匹;在QBC中可以用MatchMode的静态常量实例来设定字符串模式,如Expression.like("name","i",MatchModle.START))。
30、事务一般用法
1 try
2
{
3 tx =
session.beginTransaction();
4
5
tx.commit();
6 }catch
(Exception e)
7
{
8 if(tx!=null
)
9 try
{
10
tx.rollback();
11 }catch
(HibernateException ex{}
12 }finally
13
{
14 try
{
15
session.close();
16 }catch
(){}
17
}
随着事务提交,我的“夜未眠”也全部提交完成,没有重点,只有基本点,没有高难性,只有实用性。
...
在这中秋过后的季节,仍吹着夏天的风,似乎让我们丝毫无法感受到冬天在四季中的份额,当夏日依依不舍流连忘返不愿离去,我想,我喜欢的是秋天的清爽;我想,我更喜欢的是冬天的到来;我想,我不能再如此未眠...
二零零七年十月写于广州
(转载请注明出处)
凤凰涅槃/浴火重生/马不停蹄/只争朝夕
隐姓埋名/低调华丽/简单生活/完美人生