自己用HashMap来模拟一个Session缓存(简易版)
2018-06-18 02:04:19来源:未知 阅读 ()
本文记录:Hibernate中一级缓存的特点。
一级缓存的细节什么操作会向一
1.级缓存放入数据
save,update,saveOrUpdate,load,get,list,iterate,lock
2.什么操作会从一级缓存取数据。
get / load / list
get / load 会首先从一级缓存中取,如没有,再有不同的操作[get 会立即向数据库发请求,而load 会返回一个代理对象,直到用户真的去使用数据,才会向数据库发请求。
?list 会不会从session缓存取数据?
3.一级缓存不需要配置,就可以使用,它本身没有保护机制,所以我们程序员要考虑这个问题,我们可以同 evict 或者 clear来清除session缓存中对象。
evict 是清除一个对象,clear是清除所有的sesion缓存对象
4.session级缓存中对象的生命周期, 当session关闭后,就自动销毁.
5.自己用HashMap来模拟一个Session缓存,加深对缓存的深入。
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; } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:3分钟搞掂Set集合
- 构建自己的jar包上传至Mvaen中央仓库和版本更新 2020-06-11
- HashMap:源代码(构造方法、put、resize、get、remove、rep 2020-06-04
- HashMap1.7和1.8,红黑树原理! 2020-06-03
- JDK1.7和1.8的HashMap对比详解 2020-06-02
- HashMap理解 2020-05-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash