我的
H...
ibernate拾锦...
21、session激发触发器
如果一个session激发一个触发器,由于触发器对session是透明的,一次造成数据不一致。
解决方法:调用session的flush()方法和refresh()使其同步;
由于使用触发器使得在update时候无法比较属性是否发生变化。
解决方法:在class元素中设置select-before-update为true。
22、精粒度对象模型
从一类中抽象出来的单独类,提高代码重用性,被抽象出来的类在映射文件中定义为<component>,无OID,必须依赖父类。</component>
23、session三种检索类型
a、load()跟get()都以OID加载
Customer customer = (Customer)session.load(Customer.class,new Long(1));//同get()方法
b、find()方法通过HQL进行检索
List customeLists = session.find("from Customer as c where c.id = 1);
24、延迟检索策略
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、事务一般用法
java 代码
- try{
- tx = session.beginTransaction();
- tx.commit();
- }catch(Exception e){
- if(tx!=null)
- try{
- tx.rollback();
- }catch(HibernateException ex{}
- }finally{
- try{
- session.close();
- }catch(){}
- }
随着事务提交,我的“夜未眠”也全部提交完成,没有重点,只有基本点,没有高难性,只有实用性。
...
在这中秋过后的季节,仍吹着夏天的风,似乎让我们丝毫无法感受到冬天在四季中的份额,当夏日依依不舍流连忘返不愿离去,我想,我喜欢的是秋天的清爽;我想,我更喜欢的是冬天的到来;我想,我不能再如此未眠...