Hibernate中Session什么意思,和平时写的Session有什么不同?

来源:学生作业帮助网 编辑:作业帮 时间:2024/10/09 10:39:01
Hibernate中Session什么意思,和平时写的Session有什么不同?
xV]oG+yin>YV"MF&~TQ\Hc> ,˱8YH8 ;/rggY$, f93杵`${F!22x^@f7(R\*Dɂi()h DݴږUs{kw~g{ z@CThk 'Cȼ2+$Ђ"#YPdɈzBͳ9xqnL-{-20*riS7i.]?[ ֻ DH ̚kkne͹zA¹]#~z>&jCSz>V]7ԼwK,I}!!q"`Iy+@CDCef5ǡ8L W+<,fe] I[:#Z>֏fPcDϋ箹vp]ykR ڔX 3E;J2́0YJ"YGp1\~Kn;,y0ԭ1ډӠah\Du^t dgxѼgO( B,3QnoPȌt :楰';kf7k/6tiVCA%tg@̟ C!N4: ƶ@YPUnlMg<냼e# ?gFxOCvM$.*vYzW.1jEM%WG"Z{엲?,.- ɕ!>R'*wF[􈶉a11ܒVmqŒ؂VƐ<?flAF܉e0wsć7AF ^t[8iƻ:>N`w8=K]QY _cqT*vN̓ɑ>00WL0@Qh,/N`ps'V( !&^d6lޫQ)qA1[/¡h,dwd-GV/ )vϑwVLc̩_Eh`5DO}wY "jV4zq[2)PrRAv(N|j&aRu%PЏ1k)8n`(|[΀ j`IP}%^㟽W>vKE8{SQnqsc#' % =P2XЏDf(+scސpgaxaMY1'(/Qݙ5IsGIq2.bDLP| Ædn/7S+Nk?_=Z> nj

Hibernate中Session什么意思,和平时写的Session有什么不同?
Hibernate中Session什么意思,和平时写的Session有什么不同?

Hibernate中Session什么意思,和平时写的Session有什么不同?
一.主配置
◆查询缓存,同下面讲的缓存不太一样,它是针对HQL语句的缓存,即完全一样的语句再次执行时可以利用缓存数据.但是,查询缓存在一个交易系统(数据变更频繁,查询条件相同的机率并不大)中可能会起反作用:它会白白耗费大量的系统资源但却难以派上用场.
◆fetch_size,同JDBC的相关参数作用类似,参数并不是越大越好,而应根据业务特征去设置
◆batch_size同上.
◆生产系统中,切记要关掉SQL语句打印.
二.Hibernate Session缓存
1.数据库级缓存:这级缓存是最高效和安全的,但不同的数据库可管理的层次并不一样,比如,在ORACLE中,可以在建表时指定将整个表置于缓存当中.
2.Session缓存:在一个Hibernate Session有效,这级缓存的可干预性不强,大多于Hibernate自动管理,但它提供清除缓存的方法,这在大批量增加/更新操作是有效的.比如,同时增加十万条记录,按常规方式进行,很可能会发现OutofMemeroy的异常,这时可能需要手动清除这一级缓存:Session.evict以及 Session.clear
3.应用缓存:在一个SessionFACTORY中有效,因此也是优化的重中之重,因此,各类策略也考虑的较多,在将数据放入这一级缓存之前,需要考虑一些前提条件:
◆数据不会被第三方修改(比如,是否有另一个应用也在修改这些数据?)
◆数据不会太大
◆数据不会频繁更新(否则使用CACHE可能适得其反)
◆数据会被频繁查询
◆数据不是关键数据(如涉及钱,安全等方面的问题).
Hibernate Session缓存有几种形式,可以在映射文件中配置:read-only(只读,适用于很少变更的静态数据/历史数据),nonstrict-read- write,read-write(比较普遍的形式,效率一般),transactional(JTA中,且支持的缓存产品较少)
4.分布式缓存:同3)的配置一样,只是缓存产品的选用不同,在目前的Hibernate中可供选择的不多,oscache,jboss cache,目前的大多数项目,对它们的用于集群的使用(特别是关键交易系统)都持保守态度.在集群环境中,只利用数据库级的缓存是最安全的.
三.延迟加载
◆实体延迟加载:通过使用动态代理实现
◆集合延迟加载:通过实现自有的SET/LIST,Hibernate提供了这方面的支持\x0d