zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java模拟hibernate一级缓存示例分享

JAVA模拟hibernate缓存 示例 分享 一级
2023-06-13 09:15:24 时间

纯Java代码模拟Hibernate一级缓存原理,简单易懂。

复制代码代码如下:


importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

publicclassLevelOneCache{
 //这个对象就是用来模拟hibernate一级缓存的
 privatestaticMap<Integer,Student>stus=newHashMap<Integer,Student>();

 publicstaticvoidmain(String[]args){
  getStudent(1);
  getStudent(1);
  getStudent(1);
  getStudent(2);
  getStudent(2);
 }

 publicstaticStudentgetStudent(Integerid){
  if(stus.containsKey(id)){
   System.out.println("从缓存中取数据");
   returnstus.get(id);
  }else{
   System.out.println("从数据库中取数据");
   Students=MyDB.getStudentById(id);
   //将从数据库中取得的数据放入缓存
   stus.put(id,s);
   returns;
  }
 }
}
//模拟数据库
classMyDB{
 privatestaticList<Student>list=newArrayList<Student>();
 static{
  Students1=newStudent();
  s1.setName("Name1");
  s1.setId(1);
  Students2=newStudent();
  s2.setName("Name2");
  s2.setId(2);
  Students3=newStudent();
  s3.setName("Name3");
  s3.setId(3);
  //初始化数据库
  list.add(s1);
  list.add(s2);
  list.add(s3);
 }
 //数据库中提供公共的查询方法
 publicstaticStudentgetStudentById(Integerid){
  for(Students:list){
   if(s.getId().equals(id)){
    returns;
   }
  }
  //查询不到则返回空
  returnnull;
 }
}

//domain对象
classStudent{
 privateIntegerid;
 privateStringname;
 publicIntegergetId(){
  returnid;
 }
 publicvoidsetId(Integerid){
  this.id=id;
 }
 publicStringgetName(){
  returnname;
 }
 publicvoidsetName(Stringname){
  this.name=name;
 }
}