SSH企业培训之数据抓取策略与高速缓存课件.ppt

上传人:peixunshi 文档编号:14487353 上传时间:2022-02-07 格式:PPT 页数:23 大小:412KB
返回 下载 相关 举报
SSH企业培训之数据抓取策略与高速缓存课件.ppt_第1页
第1页 / 共23页
SSH企业培训之数据抓取策略与高速缓存课件.ppt_第2页
第2页 / 共23页
SSH企业培训之数据抓取策略与高速缓存课件.ppt_第3页
第3页 / 共23页
SSH企业培训之数据抓取策略与高速缓存课件.ppt_第4页
第4页 / 共23页
SSH企业培训之数据抓取策略与高速缓存课件.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《SSH企业培训之数据抓取策略与高速缓存课件.ppt》由会员分享,可在线阅读,更多相关《SSH企业培训之数据抓取策略与高速缓存课件.ppt(23页珍藏版)》请在三一文库上搜索。

1、数据抓取策略与高速缓存,1,SSH企业培训之数据抓取策略与高速缓存,介绍,讲授:刘晓涛Email:Blog:MSN:,2,SSH企业培训之数据抓取策略与高速缓存,数据加载策略与优化。高速缓存讨论(含批量处理)。对象同一性。复合主键。触发器/数据库生成值的处理。计算列的处理。,本章目标,3,SSH企业培训之数据抓取策略与高速缓存,数据加载策略与优化,延迟加载加载代理(往往是ID),真正用到数据时才加载关联数据。lazy=“true”,默认值。即时加载一条SQL语句连接查询,fetch=“join”。两条SQL语句单独查询,fetch=“select”。批量加载设置batch-size属性。,4,

2、SSH企业培训之数据抓取策略与高速缓存,Hibernate抓取策略,1.保持默认,同fetch=select,如:fetch=select,另外发送一条select语句抓取当前对象关联实体或集合2.设置fetch=join,如:fetch=join,hibernate会通过select语句使用外连接来加载其关联实体或集合此时lazy会失效3.保持默认,同fetch=select,如:fetch=select,另外发送一条select语句抓取当前对象关联实体或集合4.设置fetch=join,如:fetch=join,hibernate会通过select语句使用外连接来加载其关联实体或集合此时l

3、azy会失效,5,SSH企业培训之数据抓取策略与高速缓存,Hibernate抓取策略,5.设置fetch=subselect,如:fetch=“subselect”,另外发送一条select语句抓取在前面查询到的所有实体对象的关联集合,合适的时候使用子查询。6.batch-szie在上的应用batch-size属性,可以批量加载实体类,参见:Classes.hbm.xml7.batch-szie在集合上的应用batch-size属性,可以批量加载实体类,参见:Classes.hbm.xml,6,SSH企业培训之数据抓取策略与高速缓存,hibernate一级缓存,一级缓存和session的生命周

4、期一致下面方法支持一级缓存:get()load()iterate(缓存实体对象而不是属性)如何管理一级缓存:session.clear()session.evict()如何避免一次性大量的实体数据入库导致内存溢出先flush,再clear如果数据量特别大,考虑采用jdbc实现,如果jdbc也不能满足要求可以考虑采用数据本身的特定导入工具。,7,SSH企业培训之数据抓取策略与高速缓存,hibernate二级缓存,也称为进程级的缓存或SessionFactory级缓存,可以被所有的session共享二级缓存的生命周期和SessionFactory的生命周期一致。二级缓存的配置和使用:将echcac

5、he.xml文件拷贝到src下开启二级缓存,修改hibernate.cfg.xml文件true指定缓存产品提供商,修改hibernate.cfg.xml文件org.hibernate.cache.EhCacheProvider指定那些实体类使用二级缓存(两种方法)在映射文件中采用标签在hibernate.cfg.xml文件中,采用标签二级缓存是缓存实体对象的,8,SSH企业培训之数据抓取策略与高速缓存,对象同一性,同一性概念数据库中一条记录在内存中应该只有一种表示。同一性级别事务(session)级别。过程(SessionFactory)级别(多个session中保证同一性)。JVM级别。分布

6、式系统级别。Hibernate保证事务(session)级别的实体对象的同一性。其他级别不保证。复合主键类需要覆盖hashCode()和equals()方法以保证对象的同一性。,9,SSH企业培训之数据抓取策略与高速缓存,复合主键映射,设计决策表最好加入一个与业务无关的列作为主键。最好不使用自然键(如User使用 user_name 作为主键),因为业务需求发生变化是很难重构数据模型。遗留数据库可能用两个或以上的列作为复合主键。通常将复合主键相关的属性,单独放到一个主键类中主键类必须实现序列化接口(implements Serializable)。需要覆盖hashCode()和equals()

7、方法以保证对象的同一性。,10,SSH企业培训之数据抓取策略与高速缓存,案例,public class FiscalYearPeriod private FiscalYearPeriodPK fiscalYearPeriodPK;private Date beginDate;private Date endDate;/getXxx()/setXxx() ,11,SSH企业培训之数据抓取策略与高速缓存,主键类,ublic class FiscalYearPeriodPK implements Serializable private int fiscalYear; /核算年private int

8、 fiscalPeriod; /核算月/getXxx()/setXxx(),12,SSH企业培训之数据抓取策略与高速缓存,覆盖hashCode()方法,hashCode(给对象产生OID)。Overridepublic int hashCode() final int prime = 31;int result = 1;result = prime * result + fiscalPeriod;result = prime * result + fiscalYear;return result;,13,SSH企业培训之数据抓取策略与高速缓存,覆盖equals()方法,Overridepubl

9、ic boolean equals(Object obj) if (this = obj) return true; if (obj = null) return false; if (getClass() != obj.getClass() return false; final FiscalYearPeriodPK other = (FiscalYearPeriodPK) obj;if (fiscalPeriod != other.fiscalPeriod) return false; if (fiscalYear != other.fiscalYear) return false; re

10、turn true;,14,SSH企业培训之数据抓取策略与高速缓存,映射文件, ,15,SSH企业培训之数据抓取策略与高速缓存,save(),session.beginTransaction(); FiscalYearPeriod fiscalYearPeriod = new FiscalYearPeriod();FiscalYearPeriodPK pk = new FiscalYearPeriodPK();pk.setFiscalYear(2009);pk.setFiscalPeriod(3);fiscalYearPeriod.setFiscalYearPeriodPK(pk); fisc

11、alYearPeriod.setBeginDate(new Date(); fiscalYearPeriod.setEndDate(new Date(); session.save(fiscalYearPeriod); session.getTransaction().commit();,16,SSH企业培训之数据抓取策略与高速缓存,load(),session.beginTransaction();FiscalYearPeriodPK pk = new FiscalYearPeriodPK();pk.setFiscalYear(2009);pk.setFiscalPeriod(3);Fisc

12、alYearPeriod fiscalYearPeriod = (FiscalYearPeriod)session.load(FiscalYearPeriod.class, pk); System.out.println(fiscalYearPeriod.getPeriodSts(); session.getTransaction().commit();,17,SSH企业培训之数据抓取策略与高速缓存,数据库生成值的处理,*update=“false” insert=“false”该列不会出现在insert/update语句中,是只读的。* generated:立即执行一个select获取数据库

13、生成的值,18,SSH企业培训之数据抓取策略与高速缓存,触发器,如果没有设置generated=“” ,就需要显式地再查询:session.save(object);session.flush();session.refresh(object);/获取触发器的结果。,19,SSH企业培训之数据抓取策略与高速缓存,默认的属性值,* default:设置默认值,20,SSH企业培训之数据抓取策略与高速缓存,计算列(衍生属性)的处理,formula属性可以是表达式/SQL函数/SQL子查询。,21,SSH企业培训之数据抓取策略与高速缓存,总结,数据加载策略与优化。高速缓存讨论(含批量处理)。对象同一性。复合主键。触发器/数据库生成值的处理。计算列的处理。,22,SSH企业培训之数据抓取策略与高速缓存,23,SSH企业培训之数据抓取策略与高速缓存,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1