图片 2

自己用HashMap来模拟一个Session缓存,入门实例

本文记录:Hibernate中一级缓存的特点。

Jquery实现树桩导航

 

一级缓存的细节什么操作会向一

 

一、基础概念

1.级缓存放入数据

展示一下效果?

  静态关键字 static 是成员修饰符,直接用于修饰成员。

save,update,saveOrUpdate,load,get,list,iterate,lock

 

  (一)特点:

2.什么操作会从一级缓存取数据。
get / load / list

图片 1图片 2

    1.被静态修饰的成果,可以直接被类名所调用。

get / load 会首先从一级缓存中取,如没有,再有不同的操作[get
会立即向数据库发请求,而load
会返回一个代理对象,直到用户真的去使用数据,才会向数据库发请求。
?list 会不会从session缓存取数据?

 

    2.静态成员优先于对象存在。

3.一级缓存不需要配置,就可以使用,它本身没有保护机制,所以我们程序员要考虑这个问题,我们可以同
evict 或者 clear来清除session缓存中对象。

 

    3.静态成员随着类的加载而加载。随着类的消失而消失。静态成员的生命周期很长。

evict 是清除一个对象,clear是清除所有的sesion缓存对象

 

  (二)注意事项:

4.session级缓存中对象的生命周期, 当session关闭后,就自动销毁.

当我鼠标点击的是时候展开下级菜单例如:我点击汽车
就会显示奥迪与奔驰再次点击就会闭合

    1.静态方法只能访问静态成员,不能访问非静态成员。

5.自己用HashMap来模拟一个Session缓存,加深对缓存的深入。

实现思路

    2.静态方法中不能出现this或者super关键字。

package dome;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MyCache {
    // 使用map来模拟缓存
    static Map<Integer, Student> maps = new HashMap<Integer, Student>();
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        getStudent(1);
        getStudent(1);
        getStudent(1);
        getStudent(1);
        getStudent(3);
        getStudent(3);

    }

    public static Student getStudent(Integer id) { // s.get()

        // 先到缓存去
        if (maps.containsKey(id)) {
            // 在缓存有
            System.out.println("从缓存取出");
            return maps.get(id);
        } else {
            System.out.println("从数据库中取");
            // 到数据库取
            Student stu = MyDB.getStudentFromDB(id);
            // 放入缓存
            maps.put(id, stu);
            return stu;
        }

    }

}

// 我的数据库
class MyDB {

    static List<Student> lists = new ArrayList<Student>();

    // 初始化数据库,假设有三个学生
    static {
        Student s1 = new Student();
        s1.setId(1);
        s1.setName("aaa");
        Student s2 = new Student();
        s2.setId(2);
        s2.setName("bbb");
        Student s3 = new Student();
        s3.setId(3);
        s3.setName("ccc");
        lists.add(s1);
        lists.add(s2);
        lists.add(s3);

    }

    public static Student getStudentFromDB(Integer id) {
        for (Student s : lists) {
            if (s.getId().equals(id)) {
                return s;
            }
        }
        return null;// 在数据库中没有.

    }
}

class Student {
    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

1. 实现Ul的搭建,并建立样式实现隐藏相对应的样式

    3.主函数是静态的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:

相关文章

网站地图xml地图