码迷,mamicode.com
首页 > 编程语言 > 详细

【Java EE 学习第47天】【Hibernate学习第四天】【sesion】【一级缓存】【懒加载】

时间:2015-09-22 18:03:58      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

  一、Session概述

  1.Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载Java 对象的方法.

  2.理解Session的缓存

    使用缓存的目的:尽量减少访问数据库的频率

    (1)在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存. 只要 Session 实例没有结束生命周期, 存放在它缓存中的对象也不会结束生命周期

    (2)当session的save()方法持久化一个对象时,该对象被载入缓存,以后即使程序中不再引用该对象,只要缓存不清空,该对象仍然处于生命周期中。当试图load()对象时,会判断缓存中是否存在该对象,有则返回。没有在查询数据库

  3.清理缓存

     Session 具有一个缓存, 位于缓存中的对象称为持久化对象, 它和数据库中的相关记录对应. Session 能够在某些时间点, 按照缓存中对象的变化来执行相关的 SQL 语句, 来同步更新数据库, 这一过程被称为清理缓存(flush) 

  4.默认情况下 Session 在以下时间点清理缓存:

    (1)当应用程序调用 Transaction 的 commit()方法的时, 该方法先清理缓存(session.flush()),然后在向数据库提交事务(tx.commit())

    (2)当应用程序执行一些查询操作时,如果缓存中持久化对象的属性已经发生了变化,会先清理缓存,以保证查询结果能够反映持久化对象的最新状态

    (3)显式调用 Session 的 flush() 方法.

  5.flush/commit/refresh/clear四种方法的区别

    flush: 进行清理缓存(此时缓存中的数据并不丢失)的操作,让缓存和数据库同步 执行一些列sql语句,但不提交事务,;

       commit:先调用flush() 方法,然后提交事务. 则意味着提交事务意味着对数据库操作永久保存下来。

       reresh:刷新,让session和数据库同步,执行查询,把数据库的最新信息显示出来,更新本地缓存的对象状态.

       clear:清空缓存,等价于list.removeAll(); 

二、一级缓存

  1.与二级缓存不同的是,hibernate已经内部实现了一级缓存

  2.研究一级缓存需要研究的几个问题

    (1)一级缓存的生命周期:随着session的创建而被创建,随着session的关闭而消失

    (2)一级缓存是依赖于谁存在的:session对象

    (3)怎么样把数据存放到一级缓存中:、

    (4)怎么样从给一级缓存中获取数据

    (5)怎么样把缓存中的数据同步到数据库

    (6)怎么样吧数据库中的数据同步到一级缓存中

    (7)一级缓存的特性

    (8)从一级缓存中清除某个对象

    (9)清空一级缓存中所有的数据。

  3.

【Java EE 学习第47天】【Hibernate学习第四天】【sesion】【一级缓存】【懒加载】

标签:

原文地址:http://www.cnblogs.com/kuangdaoyizhimei/p/4829353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!