我的日常

登录/注册
您现在的位置:论坛 资料库 JAVA开发 > hibernate 延时加载 一级缓存二级缓存
总共48087条微博

动态微博

查看: 1863|回复: 0

hibernate 延时加载 一级缓存二级缓存

[复制链接]

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

跳转到指定楼层
楼主
发表于 2014-05-26 20:49:43 |只看该作者 |倒序浏览
hibernate 延时加载

load支持延时加载(懒加载)
get不支持延时加载

解决懒加载方法  设置lazy="false"
lazy="true"默认使用懒加载
lazy="false"立即加载

在hiberante中设置lazy=“false”
javaWEB开可以使用过滤器解决
struts2可以使用过滤器或者拦截器
spring开始中SessionFilterInView过滤器解决


数据库关系
双向one-to-many
静态导包用法:
1、JDK5.0以上版本才可以使用
2、方法必须static 修饰
3、import static 类名.方法名
4、使用:    方法名()==类.方法名()


hibernate高级查询
1、HQL 查询对象 有SQL影子
2、QBC 语句  只支持查询   
3、SQL语句 ibatis

hibernate缓存机制
1、一级缓存
        一级缓存也叫session缓存、事务缓存
        一级缓存和session绑定
支持session缓存方法:
1:get
2:load
3:         save
createQuery、createCriteria不支持一级缓存

session缓存中数据不能共享
//管理session缓存
session.close()关闭缓存
session.clear();//清空session缓存中所有的数据
session.evict(user);//清空当前对象
2、二级缓存
   二级缓存也叫sessionFactory缓存
(1)添加第三方类库
      ehcache-1.2.3.jar
      log4j-1.2.15.jar
      commons-logging.jar
   (2)把hibernate-3.3.2.GA\project\etc\ehcache.xml
      复制到工程src根目录
      <defaultCache
        maxElementsInMemory="10000" --最大对象数
        eternal="false"      
        <!--eternal="true"缓存不清空
        timeToIdleSeconds、timeToLiveSeconds失效
        -->
        timeToIdleSeconds="120"<!--对象最大活动状态时常-->
        timeToLiveSeconds="120"<!--缓存中对象的生命周期-->
        overflowToDisk="true" <!--对象超出最大值,就放入到临时目录-->
        />

        //超出缓存最大,放置临时目录
       <diskStore path="java.io.tmpdir"/>

      (3)在hibernate.cfg.xml中添加
       a:  <!--
        是否使用二级缓存
           默认支持二级缓存
           -->
                <property name="hibernate.cache.use_second_level_cache">
                        true
                </property>
               
                b: <!-- 二级缓存提供者 -->
                <property name="hibernate.cache.provider_class">
                        org.hibernate.cache.EhCacheProvider
                </property>
                (4)使用:
                   a:在hibernate映射文件中使用*.hbm.xml
                      <cache usage="read-only"/><!-- 设置只读二级缓存 -->
                   b:在hiberante.cfg.xml统一管理
                   <class-cache class="com.tarena.entity.User" usage="read-only" />

二级缓存可以实现session数据共享


科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表